网页爬虫抓取百度图片(我们先来直接分析代码:[python]__)

优采云 发布时间: 2022-01-26 02:04

  网页爬虫抓取百度图片(我们先来直接分析代码:[python]__)

  2022-01-07

  在上一次爬虫中,主要是使用第三方Beautifulsoup库来爬取数据,然后通过选择器在网页中找到每一个具体的数据,每个类别都有一个select方法。接触过网页的人都知道,很多有用的数据都放在一个共同的父节点上,但它的子节点却不同。在上一次爬虫中,每类数据都必须从其父类(包括其父节点的父节点)中找到ROI数据所在的子节点,这会使爬虫非常臃肿,因为很多数据具有相同的父节点,每次都必须重复找到。这种爬行动物效率低下。

  因此,作者在上次的基础上改进了爬取策略,并举例说明。

  

  如图,作者这次爬取了百度音乐的页面,爬取的内容就是上面列表下的所有内容(歌名、歌手、排名)。如果按照最后一个爬虫的方式,就得写三个select方法来分别抓取歌名、歌手、排名,但是作者观察到这三个数据都放在了一个li标签中,如图:

  

  这样,我们是不是直接抓取ul标签,然后分析里面的数据,得到所有的数据呢?答案当然是。

  但是 Beaufulsoup 不能直接提供这样的方法,但是 Python 是无所不能的,而 Python 自带的 re 模块是我见过的最引人入胜的模块之一。它可以在字符串中找到我们让我们 roi 的区域。上面的 li 标签收录了我们需要的歌曲名称、歌手和排名数据。我们只需要使用 li 标签中的 re.findall() 方法就可以找到它。我们需要的数据。这样可以大大提高我们爬虫的效率。

  我们直接分析代码:

  [python]viewplain

  defparse_one_page(html):soup=BeautifulSoup(html,'lxml')data=soup.select('div.ranklist-wrapper.clearfixdiv.bdul.song-listli')pattern1=pile(r'(.*?)

  .*?title="(.*?)".*?title="(.*?)".*?',re.S)pattern2=pile(r'(.*?)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线