我尝试构建一个非常简单的抓取工具来启动某个网站,并且不仅抓取该网站,还抓取外部链接(最终从起始网站扩展 n 网站) )。目前,它确实击中了外部链接并拉出了第一个链接页面,但我无法超越它。
这是我现在的蜘蛛:
import scrapy
import json
from seocrawler.items import SeocrawlerItem
from scrapy.contrib.spiders import CrawlSpider
class SeocrawlerSpider(CrawlSpider):
name = "seocrawler_spider"
start_urls = ['http://www.example.com/']
def parse(self, response):
for href in response.css("a::attr('href')"):
url = response.urljoin(href.extract())
yield scrapy.Request(url, callback=self.parse_page)
next_url = response.css(
"a::attr('href')"
).extract_first()
if next_url:
yield scrapy.Request(next_url, callback=self.parse)
def parse_page(self, response):
item = SeocrawlerItem()
item['page_link'] = response.url
item['page_title'] = response.xpath('/html/head/title/text()').extract()
item['page_meta_description'] = response.xpath('/html/head/meta[@name="description"]/@content').extract()
item['page_h1'] = response.xpath('//h1/text()').extract()
yield item
我已经尝试将DEPTH_LIMIT
设置为0并设置为较高的数字,但它似乎并没有影响它。无论如何,request_depth_max
都会被报告为1。
我在这里缺少什么?