前言
此文只是介绍如何使用Beautiful来爬取豆瓣电影排行榜,BeautifukSoup的下载与安装即使用方法可以直接看我以前的文章BeautifulSoup安装以及使用方法。
下面的代码直接使用了BeautifuilSoup的各种方法,如果看不懂,请点击上面的链接。
1.信息分析
需要获取的信息有:电影名、评分、导演、编剧、演员、日期、评论数、类型、详情页链接等。
需要爬取的网站地址:豆瓣电影排行榜
页面截图如下
从上面的图片可以看出,只是在首页并不能获得所有需要的信息,并且信息并不是完整的还有遗漏。
所以获得信息时需要进入每个电影所在的也就是详情页页面。如下图
2.解析方法
话不多说,我们开始吧,不论是使用BeautifulSoup还是lxml方法都需要添加请求头,header中不仅添加了必要的User-Agent,还添加了一个Cookie,Cookie中记录的是用户的账号与密码信息,添加了Cookie在爬虫的过程中爬虫就是登录状态以免在爬取过程中进入登录跳转。
headers = {
'User-Agent': '',
'Cookie': ''
}
获取Cookie的方法也很简单,登录豆瓣后打开网站的检查功能,在Network中就可获得,方法类似于获得User-Agent,如下图。
有了headers以后就可以开始爬取网站了,代码如下。
url = 'https://movie.douban.com/chart'
html = requests.get(url,headers=headers).text
soup = BeautifulSoup(html,'lxml')
soup = soup.find_all('a',class_='nbg')
base_urllist = []
for s in soup:
base_urllist.append(s['href'])
以上的代码作用是将首页中所有的电影的详情页链接即url存入列表base_urllist中。
def 存入列表(list):
new_list = []
for i in list:
new_list.append(i.getText())
return new_list
for url in base_urllist:
html = requests.get(url,headers=headers).text
soup = BeautifulSoup(html,'lxml')
电影名 = soup.find('span',property="v:itemreviewed").getText()
导演 = soup.find('a',rel="v:directedBy").getText()
编剧 = 存入列表(soup.find('span',class_="attrs").find_all('a'))
主演 = 存入列表(soup.find_all('a',rel="v:starring"))
类型 = 存入列表(soup.find_all('span',property="v:genre"))
评分 = soup.find('strong').getText()
评论数 = soup.find('span',property="v:votes").getText()
item = {
'电影名': 电影名,
'导演': 导演,
'编剧': 编剧,
'主演': 主演,
'类型': 类型,
'评分': 评分,
'评论数': 评论数,
'详情页链接': url,
}
print(item)
通过以上代码就可以获取到所需的信息了。