我正在编写一个 Scrapy CrawlSpider,它读取第一页上的 AD 列表,获取一些信息,例如列表和 AD url 的缩略图,然后向每个 AD url 发出请求以获取其详细信息。
它在测试环境中工作和分页显然很好,但今天试图进行完整的运行,我意识到在日志中:
Crawled 3852页数(228 页/分钟),已刮擦256物品(15 件/分钟)
我不明白抓取的页面和抓取的项目之间存在如此大差异的原因。任何人都可以帮助我了解这些物品在哪里丢失?
我的蜘蛛代码:
class MySpider(CrawlSpider):
name = "myspider"
allowed_domains = ["myspider.com", "myspider.co"]
start_urls = [
"http://www.myspider.com/offers/myCity/typeOfAd/?search=fast",
]
#Pagination
rules = (
Rule (
SgmlLinkExtractor()
, callback='parse_start_url', follow= True),
)
#1st page
def parse_start_url(self, response):
hxs = HtmlXPathSelector(response)
next_page = hxs.select("//a[@class='pagNext']/@href").extract()
offers = hxs.select("//div[@class='hlist']")
for offer in offers:
myItem = myItem()
myItem['url'] = offer.select('.//span[@class="location"]/a/@href').extract()[0]
myItem['thumb'] = oferta.select('.//div[@class="itemFoto"]/div/a/img/@src').extract()[0]
request = Request(myItem['url'], callback = self.second_page)
request.meta['myItem'] = myItem
yield request
if next_page:
yield Request(next_page[0], callback=self.parse_start_url)
def second_page(self,response):
myItem = response.meta['myItem']
loader = myItemLoader(item=myItem, response=response)
loader.add_xpath('address', '//span[@itemprop="streetAddress"]/text()')
return loader.load_item()
假设你去你的第一个start_urls
(实际上你只有一个)并且此页面上只有一个锚链接(<a>
)。所以你的蜘蛛会爬行href
url 在此链接中,您可以控制回调,parse_start_url
。在这个页面里面有 5000 个 div,其中有一个hlist
班级。假设所有 5000 个后续 URL 均返回 404,即未找到。
在这种情况下,您将拥有:
让我们再举一个例子:在你的起始 url 页面上,你有 5000 个锚点,但这些页面中没有一个(如零)具有类参数为hlist
.
在这种情况下,您将拥有:
您的答案在于 DEBUG 日志输出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)