python爬取图片时怎么用xpath解析多层嵌套div标签的img标签下的src内容 python爬取div内容_让div不占位置


现今网络资源发达,其中数据就是一个重要的网络资产。而Python对于爬取网络数据的库很多,其中requests是一个非常人性化的HTTP客户端库。今天我们就用他来快速列出当天的热点事件和对应的热度指数。


安装相关库

pip install requestspip install bs4

定义主要的方法


python爬取图片时怎么用xpath解析多层嵌套div标签的img标签下的src内容 python爬取div内容_网页内容_02


  • 实际就2步,获取页面和解析页面

目标网页


python爬取图片时怎么用xpath解析多层嵌套div标签的img标签下的src内容 python爬取div内容_网页内容_03


首先要确定的是,我们要从哪个网页中获取当天的热点事件。本文选取某度的今日热点,如上图。数据就在右边红框的表格中。

分析数据位于网页中的位置


python爬取图片时怎么用xpath解析多层嵌套div标签的img标签下的src内容 python爬取div内容_网页内容_04


  • 要确定我们的数据的所在位置,最好的做法就是借助浏览器的工具,大部分的浏览器都提供开发人员工具(F12),可以快速定位页面的物件所在的html位置。
  • 上图可以看到,我们需要的数据在一个div标签下的一个table标签里面。为什么不直接找table来定位?因为页面中有很几个table
  • 同样地,页面也有许多div,不过,div的class='mainbody'的只有一个,因此我们使用上述的条件进行定位
  • table下的每一行就是一个tr,注意第一个tr是标题,我们不需要
  • 每个tr下都有4个td,就是表格中的4列

讲解代码


python爬取图片时怎么用xpath解析多层嵌套div标签的img标签下的src内容 python爬取div内容_网页内容_05


按照上图的代码行号来说明

  • (#15) 调用方法requests.get(),获取网页内容,输入了一个请求参数b=341。headers其实不需要指定也可以的
  • (#16) requests会自动根据服务器返回的指定编码做处理,但很多时候是错误,比如这里,实际上编码是gbk,但网页返回的只是iso-xxx。因此这里指定我们需要的编码
  • (#18) 调用rp.text即可获取网页内容。然后实例化一个 BeautifulSoup对象,实例化时传入网页内容即可
  • (#22-24) 通过BeautifulSoup对象的方法find可以方便找出某个标签。这里的查找逻辑于上面的位置分析一样。注意一点是,通过tbs('tr')可以直接列出一个table下的所有的tr标签
  • (#26) 之前说过,第一行是标题,我们不需要,所以用 rows[1:] 跳过第一行
  • (#27-32) 在遍历中的 r,就是每一行了,因此通过 r('td') 就是行中的所有的td,r('td')[0] 相当于这行中的第一个列

下面就是结果


python爬取图片时怎么用xpath解析多层嵌套div标签的img标签下的src内容 python爬取div内容_网页内容_06


  • 第一位是吴彦祖出事了
  • 我们还看到华为的主题有两条

今天的重点

  • requests.get(),获取网页内容
  • requests.get()返回的对象的encoding用于调整返回text的编码
  • BeautifulSoup对象用于方便解析html结构。其中find方法查找第一个符合条件的标签,直接使用tag('tr') 相当于调用方法 find_all,找出多个符合条件的标签

最后

使用Python可以方便爬取网络上的数据,本文以获取今日热点数据为例子做一个简单介绍,虽然例子中只是爬取了数据,但我们可以更进一步去利用这些数据。

比如:利用之前介绍过的情绪分析库,汇总当天所有标题的关键字和情绪倾向

不要限制自己的思维,好好利用学到的知识,你会发现你可以做到的不仅仅于此。

今天就到这里,我的风格就是用实例来学习,欢迎大家留意告诉我有趣的例子,如果对本文代码有疑问可以关注并留言给我。