老师您好,我遍历SelectorList的时候如果使用xpath总会提取到当前页的第一条新闻,即使对SelectorList切片之后。这是怎么回事呢?

来源:4-12 提取详情页信息

UptownFk

2020-03-17

如果使用css提取的话是可以得到当前对应的那条新闻的

写回答

4回答

慕勒5311868

2022-01-25

原因是,加点代表取当前元素为根节点向下查找元素,而不加点是以整个页面为根元素向下查找的。因为你没有加点,所以总是从根节点找第一个,而不是你所需要的从编写好的selectorlist里找第一个

0
0

慕勒5311868

2022-01-25

老哥,找到解决方法了,应该这样

image_url=post_node.xpath('.//div[@class="entry_summary"]/a/img/@src').extract_first("")
post_url=post_node.xpath('.//h2[@class="news_entry"]/a/@href').extract_first("")


0
1
bobby
是的, xpath的新版本如果从当前节点遍历需要在前面加点,补录的课程中提到过这点,其他的同学的提问中也回复过
2022-01-25
共1条回复

慕勒5311868

2022-01-25

老哥,怎么解决的?代码看看

0
0

bobby

2020-03-18

你可以尝试一下css选择器看看是否仍然有这个问题

0
7
bobby
回复
慕勒5311868
css选择器会在内部被转换为xpath选择器执行的,所以xpath更强大,但是css选择器写法更简介,所以绝大部分情况下我可能会选择使用css选择器,但是xpath选择器能完成某些css选择器无法满足的功能,比如某个节点的内容包含某些内容的节点css就不好做,但是xpath就能做
2022-01-26
共7条回复

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

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

5796 学习 · 6290 问题

查看课程