《权利的游戏》、《天赋异禀》等耳熟能详的美剧,面对如此繁多的美剧,此时不禁会问自己,我喜欢看什么美剧呢?

 

这是一个非常难以回答的问题,原因在于不同的人会有不同的偏好。为了简化问题的求解,我们将尝试用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
代码执行的结果是:

Python应用 | 我喜欢看什么美剧(一)_Python

打印的就是返回的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)
 
执行结果为:

Python应用 | 我喜欢看什么美剧(一)_Python_02

 

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)的方式进行打印,并未进行任何数据保存,那么应该如何存储这些数据呢?