网页源代码抓取工具(爬取在豆瓣网上的电影《超时空同居》导演和演员信息 )

优采云 发布时间: 2022-04-19 09:13

  网页源代码抓取工具(爬取在豆瓣网上的电影《超时空同居》导演和演员信息

)

  接下来,我们将分享一个非常简单的例子。我们想在豆瓣上爬取电影《时空同居》的导演和演员信息。

  首先我们找到电影的网址:

  

  右键查看网页查看页面源码的源码(也可以进入开发者模式(inspect)):

  

  接下来,我们输入网页的源代码。我们要采集的信息在源代码中,输入关键字即可查看。比如这里我们输入'雷佳音'来定位我们要找的位置:

  

  接下来我们需要对TML格式进行分析,比如我们要找出所有的主角:

  

  可以看到有一个通用的规则:star的名字对应的节点的名字是a,属性都是rel="v:starring",这样我们就可以很方便的使用xpath语法来定位拥有的元素这个元素。节点,然后找出所有结果。

  同理,director名字对应的节点名命名为a,属性都是rel="v:dir​​ectedBy"。我们也可以通过这个定位找到对应的文字:

  

  具体代码如下:

  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)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线