我正在尝试使用Rule
和LinkExtractor
来提取链接,这是我在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']
发布于 2019-07-10 03:17:40
您可以使用以下方法准确地获取所提取的内容
x=LinkExtractor(restrict_xpaths='//div[@class="r"]/a')
links_objects=x.extract_links(response) # a list like
对于实际的urls,您可以使用
for link in links_objects:
print(link.url) #links
https://stackoverflow.com/questions/56959097
复制相似问题