【发布时间】:2015-05-05 12:30:47
【问题描述】:
下面的蜘蛛不会抓取网站,我想知道我是否使用错误的代码来抓取同一网站内的多个页面。 这里是 TestScrpy.py 的代码:
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
import scrapy
from scrapy.contrib.linkextractors import LinkExtractor
class CraigslistSampleItem(scrapy.Item):
title = scrapy.Field()
url = scrapy.Field()
date = scrapy.Field()
description=scrapy.Field()
class SiteSpider(CrawlSpider):
name = "newscrap"
#download_delay = 2
allowed_domains = ['example.com']
start_urls = ['http://example.com/page/1']
items = {}
def parse(self, response):
sel = Selector(response)
#requests =[]
brands = sel.xpath("//div[@class='thumb']")
for brand in brands:
item = CraigslistSampleItem()
url = brand.xpath("./a/@href")[0].extract()
item['url'] = brand.xpath("./a/@href")[0].extract()
item ["title"] = brand.xpath("./a/@title").extract()
item ["date"] = brands.select("//span/text()").extract()[counter]
counter=counter+1
request = Request(url,callback=self.parse_model, meta={'item':item})
yield request
def parse_model(self, response):
sel = Selector(response)
models = sel.xpath("//*[@id='blocks-left']/div[1]/div/div[5]/p")
for model in models:
item = CraigslistSampleItem(response.meta["item"])
item ['description'] = model.xpath("//*[@id='blocks-left']/div[1]/div/div[5]/p")[0].extract()
yield item
上述程序的预期目的是从一页读取标题、url、日期..并使用读取的url,应该从url中刮取某些项目的描述。 有人可以纠正我以实现在同一网站中抓取嵌套页面的逻辑。如果您能分享一些嵌套蜘蛛的工作示例,那将有很大帮助。
【问题讨论】:
-
究竟是哪个错误?并且您需要分享您正在抓取的网址以检查功能。
标签: python python-2.7 web-scraping web-crawler scrapy