gpt4 book ai didi

python - Scrapy 将唯一网址过滤为重复网址

转载 作者:太空宇宙 更新时间:2023-11-03 10:54:11 24 4
gpt4 key购买 nike

网址:

  1. http://www.extrastores.com/en-sa/products/mobiles/smartphones-99500240157?page=1
  2. http://www.extrastores.com/en-sa/products/mobiles/smartphones-99500240157?page=2是独一无二的,但 scrapy 将这些 url 过滤为重复项而不是抓取它们。 enter image description here

我正在使用 CrawlSpider 和这些规则:

rules = (
Rule(LinkExtractor(restrict_css=('.resultspagenum'))),
Rule(LinkExtractor(allow=('\/mobiles\/smartphones\/[a-zA-Z0-9_.-]*',), ), callback='parse_product'),
)`

我不明白这种行为,有人可以解释一下吗?同样的代码在上周运行。使用 Scrapy 1.3.0 版本

最佳答案

按照@paul trmbrth 的建议,我重新检查了被抓取的代码和网站。 Scrapy 正在下载链接并过滤链接,因为它们之前已下载过。问题是 html 的“a”标签中的链接属性已从静态链接更改为某些 javascript 函数:

<a href='javascript:gtm.traceProductClick("/en-sa/mobiles/smartphones/samsung-galaxy-s7-32gb-dual-sim-lte-gold-188024">

相应地,我将蜘蛛代码更改为:

    def _process_value(value):
m = re.search('javascript:gtm.traceProductClick\("(.*?)"', value)
if m:
return m.group(1)


rules = (
Rule(LinkExtractor(restrict_css=('.resultspagenum'))),
Rule(LinkExtractor(
allow=('\/mobiles\/smartphones\/[a-zA-Z0-9_.-]*',),
process_value=_process_value
), callback='parse_product'),
)

这不是 scrapy 过滤非唯一 url 的问题,而是关于从“a”标签的“href”属性中提取链接的问题,因为该链接最近已更改并且我的代码已损坏。再次感谢@paul trmbrth

关于python - Scrapy 将唯一网址过滤为重复网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44578296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com