【发布时间】:2018-07-11 10:24:55
【问题描述】:
我创建了一个抓取工具来从网页中抓取一些产品名称。它工作顺利。我已经使用 CSS 选择器来完成这项工作。但是,我唯一不明白的是选择器a::text 和a ::text 之间的区别(不要忽略后者中a 和::text 之间的空格)。当我运行我的脚本时,无论我选择哪个选择器,我都会得到完全相同的结果。
import requests
from scrapy import Selector
res = requests.get("https://www.kipling.com/uk-en/sale/type/all-sale/?limit=all#")
sel = Selector(res)
for item in sel.css(".product-list-product-wrapper"):
title = item.css(".product-name a::text").extract_first().strip()
title_ano = item.css(".product-name a ::text").extract_first().strip()
print("Name: {}\nName_ano: {}\n".format(title,title_ano))
如您所见,title 和title_ano 都包含相同的选择器,后者中的空格除外。然而,结果总是一样的。
我的问题:两者之间有什么实质性区别,我应该什么时候使用前者,什么时候使用后者?
【问题讨论】:
-
这些“用例”怎么样?你只是在问 CSS 语法吗?
-
这是@tripleee的答案吗?
-
不,答案是我们通过“发布您的答案”按钮在下面的大框中发布的内容。我发布的是评论。它不包含任何回答的尝试,它要求您澄清您的问题——理想情况下,edit 它有一个更好的标题、更好的问题描述和合适的标签。
-
我的描述中哪一部分不清楚?我选择的哪些标签没有在我的刮刀中使用?不过要编辑标题。
-
@tripleee: 撇开标题不谈,问题描述在什么方面不清楚( ::text 和 a::text 在功能上是否等效,如果不是,它们有何不同以及是什么,咳咳, 用例)或标签不合适(问题是关于名为 Scrapy 的 Python Web 抓取库使用的选择器)?
标签: python python-3.x css-selectors scrapy pseudo-element