我正在尝试抓取这个网站:
https://www.coolblue.nl/en/our-assortment
我正在收集产品类别的所有 URL 列表。我几乎都能得到它们。出于某种原因,那些“更多...”选项卡真的很难获得。
我相信这与我的选择器有关。在这一点上,我试图在 shell 中获取那些特定的“更多..”URL,只是为了弄清楚如何正确选择它们。例如,在“膝上型电脑、台式机和显示器”部分,“更多...”类别具有 href="/en/laptops-desktops-monitors"。它位于“监视器”类别之后,带有 href="/en/monitors"。
这是我想做的。
我打开一个 scrapy shell:
scrapy shell https://www.coolblue.nl/en/our-assortment
然后我尝试通过索引选择我想要的内容。我以不同的方式尝试了 Xpath 和 CSS:
>>> response.xpath("//a[@class='category-navigation--link']/@href")[3].getall()
['/en/monitors']
>>> response.xpath("//a[@class='category-navigation--link']/@href")[4].getall()
['/en/keyboards']
>>> response.xpath("//a[contains(@class, 'category-navigation--link')]/@href")[3].getall()
['/en/monitors']
>>> response.xpath("//a[contains(@class, 'category-navigation--link')]/@href")[4].getall()
['/en/keyboards']
>>> response.css("a.category-navigation--link::attr('href')")[3].getall()
['/en/monitors']
>>> response.css("a.category-navigation--link::attr('href')")[4].getall()
['/en/keyboards']
如您所见,它从“显示器”类别跳到了“键盘”类别,我不知道为什么。第 4 个索引应该有一个值“/en/laptops-desktops-monitors”,它不在该列表的任何其他地方,因为我已经搜索过它。
它应该显示在第 4 个索引中,但它没有...知道发生了什么吗?
最佳答案
您无法获得 Laptops, desktops & monitors
的原因是该链接没有类 category-navigation--link
。使用下面的 xpath 将检索类别标题和导航链接。
//a[@class='category-navigation--link' or parent::h3[@class='product-category-navigation__title']]/@href
关于python - 抓取时难以使用 Xpath/CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55165487/