【问题标题】:Scrape "paginasamarillas.es" using Scrapy使用 Scrapy 抓取“paginasamarillas.es”
【发布时间】:2015-07-31 22:32:56
【问题描述】:

您好,我使用 scrapy 来抓取 paginasamarillas.es,但没有得到结果,这些是我的代码。请问您能帮我解决这个问题吗?

from scrapy.item import Item, Field

class AyellItem(Item):
name = Field()
pass

这是蜘蛛

from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.contrib.spiders import CrawlSpider, Rule
from ayell.items import AyellItem

    class YellSpider(CrawlSpider):
    name = 'yell'
    allowed_domains = ['http://www.paginasamarillas.es']
    start_urls = ['http://www.paginasamarillas.es/alimentacion/all-ma/all-pr/all-is/all-ci/all-ba/all-pu/all-nc/1']



    def parse_items(self, response):
        hxs = HtmlXPathSelector(response)
        directors = hxs.select("/html/body")
        items = []
        for directors in directors:
            item = AyellItem()
            item ["name"] = directors.select("/h1").extract()   
            items.append(item)
            return items

这就是我得到的

2015-07-31 19:11:25-0300 [大喊] 调试:已爬网 (200) http://www.paginasamarillas.es/alimentacion/all-ma/all-pr/all-is/all- ci/all-ba/all-pu/all-nc/1> (参考:无) 2015-07-31 19:11:25-0300 [yell] INFO:关闭蜘蛛(已完成) 2015-07-31 19:11:25-0300 [大喊] 信息:转储蜘蛛统计信息:{'downloader/request_bytes':267,'downloader/request_count':1,
'downloader/request_method_count/GET': 1,
'downloader/response_bytes': 30509, 'downloader/response_count': 1, 'downloader/response_status_count/200': 1, 'finish_reason': “完成”,“完成时间”: datetime.datetime(2015, 7, 31, 22, 11, 25, 731485), 'scheduler/memory_enqueued': 1,

【问题讨论】:

    标签: python scrapy scrape


    【解决方案1】:

    首先,看起来这是一只新蜘蛛。如果可以的话,我建议您更新到 Scrapy 1.0.1,而不是停留在 0.24(或更低版本)。

    AyellItem 有一个缩进错误,尽管这可能只是您在 SO 中键入它的方式。此外,您的pass 没有任何用途。

    至于蜘蛛本身,有几个值得注意的问题:

    • 您没有指定任何规则。蜘蛛程序在检索到第一页后不会处理任何链接。
    • 您没有解析第一页的内容。为此,您需要重写 parse_start_url(response) 方法。
    • 您的 XPath 选择器不适用于提供的页面。页面上只有一个<h1> 元素,并且不在/html/body/h1 处。您想要的项目是嵌套在具有“contenido”类的 div 中的列表项 (<li>'s)

    阅读CrawlSpiderScrapy Selectors 并全面了解您正在使用的技术应该会对您有所帮助。祝你好运!

    【讨论】:

      猜你喜欢
      • 2022-12-07
      • 2013-05-09
      • 2020-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-23
      • 2013-08-12
      • 2018-10-12
      相关资源
      最近更新 更多