《权利的游戏》、《天赋异禀》等耳熟能详的美剧,面对如此繁多的美剧,此时不禁会问自己,我喜欢看什么美剧呢?
这是一个非常难以回答的问题,原因在于不同的人会有不同的偏好。为了简化问题的求解,我们将尝试用Python语言进行数据分析来回答"我喜欢看什么美剧",先限定下主题就是我自己。
为了搞明白我喜欢看什么美剧,前提是要知道目前有哪些美剧,然后才能在这些美剧中根据条件筛选出我喜欢看的。所以第一件事要做的就是采集基本的数据。
Python实现数据采集需要用到的第三方库有requests和bs4,其中requests用来处理HTTP请求,bs4中的BeautifulSoup用来解析下载的HTML代码从中得到想要的数据。
1. 安装第三方库。
利用包管理软件pip来完成第三方库的安装。
pip install requests pip install bs4
2. 利用requests库下载HTML代码。
requsts库是一种非常方便的处理HTTP请求的第三方库,只需要一行代码就可以实现HTML网页的下载。
html = requests.get('https://www.meiju.net/search.php?searchtype=5&tid=2', verify=False).content
代码执行的结果是:
打印的就是返回的HTML代码。
3. 利用BeautifulSoup解析HTML。
有了网页的HTML代码接下来就需要从这些代码中提取需要的、有价值的信息,这个工具就是BeautifulSoup来完成。我们将从代码中提取到美剧名称、URL地址以及评分数据。
soup = BeautifulSoup(html, 'html.parser') for item in soup.select('div.hy-video-list li > a'): row = edict() row.video_name = item['title'] row.video_url = item['href'] row.video_type = i score_tag = item.select_one('span.score') if score_tag is not None: row.video_score = score_tag.text print(row)
执行结果为:
4. 批处理所有列表。
前面处理的是一页的列表,接下来利用循环处理所有的列表数据。
for i in tqdm(range(1, 112)): url = 'https://www.meiju.net/search.php?page={}&searchtype=5&tid=2'.format(i) soup = BeautifulSoup(requests.get(url, verify=False).content, 'html.parser') for item in soup.select('div.hy-video-list li > a'): row = edict() row.video_name = item['title'] row.video_url = item['href'] score_tag = item.select_one('span.score') if score_tag is not None: row.video_score = score_tag.text print(row)
至此便完成了网站所有美剧数据的采集,总共有美剧数量3972部。
结语
为了搞清楚"我喜欢看什么美剧"这一重大问题,提出了一种利用Python编程语言进行数据分析的方法,本文主要完成了数据分析的第一步数据采集的过程,采集了某网站所有的美剧基本信息,上面的代码可以看到目前这些数据都只是通过简单的print(row)的方式进行打印,并未进行任何数据保存,那么应该如何存储这些数据呢?
预知后事如何,欢迎持续关注。