用xpath和css两个语法,提取结果为什么不一样?

来源:4-10 编写spider完成抓取过程 - 2

慕容3089938

2021-09-22

图片描述`

def parse(self, response):
    post_nodes = response.xpath('.//div[@id="news_list"]/div[@class="news_block"]')
    #post_nodes = response.css('#news_list .news_block')

    for i in post_nodes:
        post_url = i.xpath('//h2[@class="news_entry"]/a/@href').extract_first("")
        #post_url = i.css('h2 a::attr(href)').extract_first("")
        print(post_url)

        yield Request(url=parse.urljoin(response.url, post_url))`

两个语法选择的节点都是一样的呀,我不可能搞错啊。。

写回答

1回答

bobby

2021-09-23

xpath的新语法想要嵌套提取有点变化 ,你在你的xpath前面加个点号,比如

i.xpath('.//h2[@class="news_entry"]/a/@href')

否则就是全局查询,css选择器没有这个问题

0
0

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

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

5796 学习 · 6290 问题

查看课程