【问题标题】:why my scrapy didnt scrapy anything?为什么我的scrapy没有scrapy任何东西?
【发布时间】:2017-02-06 08:07:23
【问题描述】:

这是我的蜘蛛。 在我执行蜘蛛之后,什么都没有出现。 我不知道为什么它是空白的。 我觉得问题是收益和回报,但我不知道如何改变它。

import scrapy
from scrapy.http import Request
from scrapy import Selector
from CSDNBlog1.items import Csdnblog1Item

class CSDNBlogSpider(scrapy.Spider):
    name='CSDNBlog1'
    download_delay=1
    allowed_domains=['blog.csdn.net']
    starts_urls=['http://blog.csdn.net/u012150179/article/details/117490171']

    def parse(self,response):
        sel=Selector(response)
        items=[]
        item=Csdnblog1Item()
        aricle_url=str(response.url)
        article_name=sel.xpath('//div[@id="article_details"]/div/h1/span/a/text()').extract()

        item['article_name']=[n.encode('utf-8') for n in article_name]
        item['article_url']=article_url.encode('utf-8')
        yield item


        urls=sel.xpath('//li[@class="next_article"]/a/@href').extract()
        for url in urls:
            print(url)
            url="http://blog.csdn.net"+url
            print(url)
            yield Request(url,callback=self.parse)

这是我的蜘蛛情况,它什么也没做。

2017-02-06 15:35:46 [scrapy] INFO: Spider opened
2017-02-06 15:35:46 [scrapy] INFO: Crawled 0 pages (at 0 pages/min), scraped     0 

【问题讨论】:

  • 表示我不知道为什么要抓取这个网站,但是什么也没有。
  • 为什么我的 scrapy 没有抓取任何东西?
  • 你应该使用start_urls,而不是starts_urls

标签: python scrapy


【解决方案1】:

您的 start_url 不再有效,并且 yield 语句的位置错误。 请尝试以下代码:

import scrapy
from CSDNBlog1.items import Csdnblog1Item
from scrapy import Selector

class Csdnblog1Spider(scrapy.Spider):
    name = "CSDNBlog2"
    download_delay=1
    allowed_domains = ["http://blog.csdn.net/"]
    start_urls = ['http://blog.csdn.net/u012150179/article/details/37306629/']

    def parse(self, response):
        item=Csdnblog1Item()
        sel=Selector(response)
        item['project'] = self.settings.get('BOT_NAME')

        article_url=str(response.url)
        article_name=sel.xpath('//div[@id="article_details"]/div/h1/span/a/text()').extract()

        item['article_name']=[n.encode('utf-8') for n in article_name]
        item['article_url']=article_url.encode('utf-8')

        urls=sel.xpath('//li[@class="next_article"]/a/@href').extract()
        for url in urls:
            print(url)
            url="http://blog.csdn.net"+url
            print(url)
        yield scrapy.Request(url,callback=self.parse)

    return item

【讨论】:

    【解决方案2】:
    In [1]: fetch('http://blog.csdn.net/u012150179/article/details/117490171')
    2017-02-06 16:41:51 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (302) to <GET http://blog.csdn.net/error/404.html?from=http%3a%2f%2fblog.csdn.net%2fu012150179%2farticle%2fdetails%2f117490171> from <GET http://blog.csdn.net/u012150179/article/details/117490171>
    2017-02-06 16:41:51 [scrapy.core.engine] DEBUG: Crawled (404) <GET http://blog.csdn.net/error/404.html?from=http%3a%2f%2fblog.csdn.net%2fu012150179%2farticle%2fdetails%2f117490171> (referer: None)
    

    确保您输入正确start_url

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 2020-12-17
      相关资源
      最近更新 更多