我一直在研究一些繁琐的教程,但有一个问题(我对此很陌生,因此,如果这是一个愚蠢的问题,我深表歉意)。到目前为止,我所看到的大部分内容都涉及:
1)输入起始网址以抓取
2)告诉scrapy要抓取页面的哪些部分
3)告诉scrapy如何找到要抓取的“下一页”
我想知道的是-当数据本身不在起始页上时,是否可以使用scrapy刮取数据?例如,我有一个指向论坛的链接。该论坛包含几个子论坛的链接。每个子论坛都有指向多个线程的链接。每个线程包含多个消息(可能跨越多个页面)。这些消息是我最终要抓取的信息。是否可以这样做,并且仅使用指向论坛的初始链接?可以使scrapy遍历每个子论坛,并且每个线程和 then 开始抓取吗?
答案 0 :(得分:1)
是的,尽管您将需要使用xpath
或css
或CrawlSpider
规则来提取导航链接,但是您无需进行数据抓取即可进行导航。这些链接仅可用于导航,而无需加载到项目中。
不要求您将所访问的每个页面中的内容加载到项目中。考虑一种情况,您需要对过去的登录进行身份验证才能获取要抓取的数据。无需从登录页面抓取/传递/写入任何数据。
出于您的目的:
def start_requests(self):
forum_url = <spam>
yield scrapy.Request(url=forum_url, callback=self.parse_forum)
def parse_forum(self, response):
#get the urls
for u in subforum_urls:
yield scrapy.Request(url=u, callback=parse_subforum)
def parse_subforum(self, response):
#get the other urls
for u in thread_urls:
yield scrapy.Request(url=u, callback=parse_thread)
def parse_thread(self, response):
#get the data you want
yield <the data>