如何知道scrapy规则提取的链接

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (22)

我正在尝试使用RuleLinkExtractor提取链接,这是我在scrapy shell中的代码

from urllib.parse import quote
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
url= f'https://www.google.com/search?q={quote("Hello World")}'
fetch(url)
x=LinkExtractor(restrict_xpaths='//div[@class="r"]/a')
y=Rule(x)

我试着用它dir(x)来看看我可以应用哪种方法最好我能找到x.__sizeof__()但是这显示了32而不是实际的10个链接。我的问题是如何找出实际使用它们提取的链接(类似列表)。这是dir(x)显示的

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_csstranslator', '_extract_links', '_link_allowed', '_process_links', 'allow_domains', 'allow_res', 'canonicalize', 'deny_domains', 'deny_extensions', 'deny_res', 'extract_links', 'link_extractor', 'matches', 'restrict_xpaths']

提问于
用户回答回答于

您可以使用以下方法准确获取所提取的内容

x=LinkExtractor(restrict_xpaths='//div[@class="r"]/a')
links_objects=x.extract_links(response) # a list like 

对于您可以使用的实际网址

for link in links_objects:
    print(link.url) #links 

扫码关注云+社区

领取腾讯云代金券