使用Scrapy刮掉“paginasamarillas.es”

时间:2015-07-31 22:32:57

标签: python scrapy scrape

您好我使用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 [yell] DEBUG:Crawled(200)http://www.paginasamarillas.es/alimentacion/all-ma/all-pr/all-is/all- CI /所有-BA /全部PU /全NC / 1>   (引用者:无)       2015-07-31 19:11:25-0300 [yell]信息:关闭蜘蛛(已完成)       2015-07-31 19:11:25-0300 [yell]信息:倾倒蜘蛛统计数据:{'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':   'finished','finish_time':datetime.datetime(2015,7,31,22,11,   25,731485),'scheduler / memory_enqueued':1,

1 个答案:

答案 0 :(得分:0)

首先,看起来这是一只新蜘蛛。如果你能够,我建议更新到Scrapy 1.0.1而不是0.24(或更低)。

AyellItem有一个缩进错误,但这可能就是你输入SO的方式。此外,您pass没有任何目的。

至于蜘蛛本身,还有一些值得注意的问题:

  • 您没有指定任何规则。检索完第一页后,蜘蛛不会处理任何链接。
  • 您没有解析第一页的内容。为此,您需要覆盖parse_start_url(response)方法。
  • 您的XPath选择器不适合所提供的页面。页面上只有一个<h1>元素,而不是/html/body/h1。您想要的项目是列表项目(<li>&#39; s)嵌套在一个div中,类别为#34; contenido&#34;

阅读CrawlSpiderScrapy Selectors,并让您更好地熟悉您正在使用的技术可以帮助您。祝你好运!