不确定这是问这样一个一般性问题的正确地方。
但是,我似乎无法找到任何使用Scrapy抓取网站的示例或教程,方法是跟踪指向末尾页面的链接,该链接将包含我希望从该产品中提取信息的产品详细信息。
因此,我从主页上开始,我可以在其中刮除href的标签,但是我该如何跟随每个链接,这将带我到另一个页面,该页面将具有更多的href链接,如果再次关注,然后最终将我带到要提取的数据所在的产品信息本身
这是某种递归吗?抱歉,但是我对此并不陌生。有人知道一个好的教程/示例吗?我发现遵循官方文档有些困难。
答案 0 :(得分:0)
我使用了Scrapy文档来做到这一点。
您可以在这里看到我的示例;
https://github.com/dbaleeds/ScrapyQuoteExtractor/blob/master/quotes/spiders/quotesBrainy.py
这是您要尝试的操作,从页面读取链接,然后跟随链接,然后从结果页面读取数据。
def parse(self, response):
读取链接页面。
def parse_item(self, response):
从上面跟随的链接中解析页面中的数据。
我建议实现此功能以了解其工作原理,然后以此为基础构建自己的项目。
答案 1 :(得分:0)
您可以在此处找到几个示例:https://github.com/scrapy/quotesbot
此外,这是一个解析http://books.toscrape.com/上的书籍的示例:
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
class MySpider(CrawlSpider):
name = 'toscrape.com'
start_urls = ['http://books.toscrape.com/']
rules = (
# The links that matches the allow / deny arguments will be processed in parse_book.
Rule(LinkExtractor(allow=('/catalogue/',), deny=('/category/', '/page')), callback='parse_book'),
# These links will be processed in the CrawlSpider defaut callback that will look for new links.
Rule(LinkExtractor(allow=('/page',))),
)
def parse_book(self, response):
yield {
'title': response.css('div.product_main>h1::text').extract_first(),
'price': response.css('p.price_color::text').extract_first(),
}
如本例所示,使用CrawlSpider
时,scrapy会自动为您提取链接并对其进行迭代,直到找不到为止。