网页源代码抓取工具(豆瓣电影《超时空同居》导演和演员信息的实例分享 )
优采云 发布时间: 2022-01-25 08:10网页源代码抓取工具(豆瓣电影《超时空同居》导演和演员信息的实例分享
)
接下来,我们将分享一个非常简单的例子。我们想在豆瓣上爬取电影《时空同居》的导演和演员信息。
首先我们找到电影的网址:
右键查看网页查看页面源码的源码(也可以进入开发者模式(inspect)):
接下来,我们输入网页的源代码。我们要采集的信息在源代码中,输入关键字即可查看。比如这里我们输入'雷佳音'来定位我们要找的位置:
接下来我们需要对TML格式进行分析,比如我们要找出所有的主角:
可以看到有一个通用的规则:star的名字对应的节点的名字是a,属性都是rel="v:starring",这样我们就可以很方便的使用xpath语法来定位拥有的元素这个元素。节点,然后找出所有结果。
同理,director名字对应的节点名命名为a,属性都是rel="v:directedBy"。我们也可以通过这个定位找到对应的文字:
具体代码如下:
import requestsfrom lxml import etree url='https://movie.douban.com/subject/27133303/?from=showing' #输入我们的urlget = 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 requestsurl='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)