网页源代码抓取工具(爬取在豆瓣网上的电影《超时空同居》导演和演员信息 )
优采云 发布时间: 2022-04-19 09:13网页源代码抓取工具(爬取在豆瓣网上的电影《超时空同居》导演和演员信息
)
接下来,我们将分享一个非常简单的例子。我们想在豆瓣上爬取电影《时空同居》的导演和演员信息。
首先我们找到电影的网址:
右键查看网页查看页面源码的源码(也可以进入开发者模式(inspect)):
接下来,我们输入网页的源代码。我们要采集的信息在源代码中,输入关键字即可查看。比如这里我们输入'雷佳音'来定位我们要找的位置:
接下来我们需要对TML格式进行分析,比如我们要找出所有的主角:
可以看到有一个通用的规则:star的名字对应的节点的名字是a,属性都是rel="v:starring",这样我们就可以很方便的使用xpath语法来定位拥有的元素这个元素。节点,然后找出所有结果。
同理,director名字对应的节点名命名为a,属性都是rel="v:directedBy"。我们也可以通过这个定位找到对应的文字:
具体代码如下:
import requests
from lxml import etree
url='https://movie.douban.com/subject/27133303/?from=showing' #输入我们的url
get = requests.get(url).text # get(url) 得到我们的网页, text将源网页转化为字符串
selector = etree.HTML(get) # 将源码转换为xpath可以识别的TML格式
info = {} #字典用于储存信息
info['电影'] = selector.xpath('//title/text()')[0].strip() # 定位电影名字
info['导演']=selector.xpath('//a[@rel="v:directedBy"]/text()') # 定位导演名字
info['演员']=selector.xpath('//a[@rel="v:starring"]/text()') # 定位演员名字
print(info)
最后我们得到一个字典集的结果:
{'电影': '超时空同居 (豆瓣)', '导演': ['苏伦'], '演员': ['雷佳音', '佟丽娅', '张衣', '于和伟', '王正佳', '陶虹', '李念', '李光洁', '杨玏', '范明', '徐峥', '杨迪', '方龄', '陈昊']}
实例分享2——爬取json格式的豆瓣电影信息
首先,json是一种轻量级的数据交换格式。其简洁明了的层次结构使JSON成为一种理想的数据交换语言,易于人类读写,也易于机器解析生成,有效改善网络传输。效率。
在我们爬取的过程中,有时可以在开发者模式返回的网页中找到完整的json格式数据。这时候我们可以使用requests包中的json函数将爬取的原文转换成格式,方便我们提取内容。我们以豆瓣电影为例:
这是我们点击分类后看到的电影信息。如果我们想爬取这些电影的信息,可以右键进入开发者模式(inspector)。
开启开发者模式后一定要刷新一次,否则之前收到的页面信息将无法显示。然后我们在右侧选项卡上选择网络,点击下面的XHR选项,我们会看到一个返回的网页,双击它。
上图是打开的json文件。因为我的电脑已经下载了json插件,所以格式比较清晰(使用Chrome浏览器的同学可以进入Chrome商店下载Juan Ramón JSON Beautifier Chrome插件)。其实Json文件也可以理解为一个大字典,里面有很多层的小字典和列表。我们找到json网页后,只需要使用requests将其转换成json格式,就可以很方便的提取信息了。代码显示如下:
import requests
url='https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=&start=0'
get = requests.get(url).json() #用json()函数得到网页源码
get = get['data']
info = {}
for i in range(len(get)):
info[get[i]['title']] = [get[i]['directors'], get[i]['rate'] ] #提取每部电影的导演和评分
print(info)