【问题标题】:Crawl Spider for nested webpages doesn't work嵌套网页的爬网蜘蛛不起作用
【发布时间】: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


【解决方案1】:

你的蜘蛛代码有(至少)两个错误:

  1. 您使用 CrawlSpider 和解析回调。不要那样做,因为文档说这不起作用see the Warning。请改用常规的Spider

  2. 您不会缩进 parse 块。缩进它们。

【讨论】:

    【解决方案2】:

    既然你要求蜘蛛/爬虫工作示例,我分享simple python crawler code。对我来说,那里的爬行逻辑很简单,因此很容易理解。

    【讨论】:

    • 嗨,我需要使用 Scrapy 抓取嵌套页面的工作示例。您分享的一个是使用 BeautifulSoup ..
    • @user3128771,Scrapy crawl example 怎么样?
    猜你喜欢
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    相关资源
    最近更新 更多