如何知道刮擦规则提取了哪些链接

时间:2019-07-09 19:00:55

标签: python scrapy

我正在尝试使用RuleLinkExtractor来提取链接,这是我在刮板外壳中的代码

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']

1 个答案:

答案 0 :(得分:2)

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

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