得到的图片地址是相同的

来源:4-24 大规模抓取图片下载出错的问题

若羲

2022-06-04

抓取地址:https://news.cnblogs.com/
现象:使用xpath方式,抓取的时候,图片地址得到的都是第一个,但使用css抓取,是正确的
    def parse(self, response, **kwargs):
        post_nodes = response.css('#news_list .news_block')
        for post_node in post_nodes:
            image_url = post_node.xpath('//*[@class="entry_summary"]//a//img//@src').get('')
            # image_url = post_node.css('.entry_summary a img::attr(src)').get('')
            print('image_url:', image_url)
            # post_url = post_node.xpath('//h2//a//@href').get('')
            post_url = post_node.css('h2 a::attr(href)').get('')
            print('url:', parse.urljoin(response.url, post_url))
            yield Request(url=parse.urljoin(response.url, post_url), meta={'front_image_url': image_url},
                          callback=self.parse_detail,
                          dont_filter=True)

图片描述

写回答

1回答

bobby

2022-06-07

xpath的嵌套提取语法有变化,  image_url = post_node.xpath('//*[@class="entry_summary"]//a//img//@src').get('') 要改成  image_url = post_node.xpath('.//*[@class="entry_summary"]//a//img//@src').get('')  

前面多了一个点表示嵌套取,否则会从跟元素获取

0
0

Scrapy打造搜索引擎 畅销4年的Python分布式爬虫课

带你彻底掌握Scrapy,用Django+Elasticsearch搭建搜索引擎

5796 学习 · 6290 问题

查看课程