鱼C论坛

 找回密码
 立即注册
查看: 3361|回复: 7

Scrapy框架爬虫出现Spider error processing错误

[复制链接]
发表于 2020-9-2 18:32:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 zhouleiqiang 于 2020-9-3 12:56 编辑

各位大佬,今天学到scrapy框架那里,就是爬取网址标题、网址内容、网址的问题,运行之后出现 Spider error processing错误,我开始单独在命令行窗口都能调试成功的,转到idle写了之后就出现这个错误了
2020-09-02 18:19:35 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://curlie.org/Computers/Pro ... s/Python/Resources/> (referer: None)
2020-09-02 18:19:35 [scrapy.core.scraper] ERROR: Spider error processing <GET https://curlie.org/Computers/Pro ... s/Python/Resources/> (referer: None)
代码如下。

import scrapy

class DmozSpider(scrapy.Spider):
        name = "dmoz"
        allowed_domains = ["dmoz.org"]
        start_urls = [
        'https://curlie.org/Computers/Programming/Languages/Python/Books/',
        'https://curlie.org/Computers/Programming/Languages/Python/Resources/'
        ]
        def parse(self,response):
                sel = scrapy.slection.Selector(response)
                sites = sel.xpath('//div[@class="title-and-desc"]')
                for site in sites:
                        #网址标题
                        title = site.xpath('div[@class="site-title"]/a/text()').extract()
                        #href是网址
                        link = site.xpath('div[@class="site-title"]/a/@href').extract()
                        #text是标题内容
                        text = site.xpath('div[@class="site-descr"]/text()').extract()
                        print(title,link,desc)



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-2 18:37:51 | 显示全部楼层
求助求助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-3 12:26:04 | 显示全部楼层
还没审核通过嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-4 14:47:06 | 显示全部楼层
1、你的allowed_domains设置的不被过滤的域是dmoz.org,allowed_domains会按你设置的域过滤掉第一个以后的url,你的start_urlsl中第二个url并没有在允许域中。所以直接被过滤掉了,也就没有被请求。
2、使用xpath提取数据直接使用response.xpath()就行,,例如:content_list = response.xpath('//div[@class="title-and-desc"]')。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-5 11:09:21 | 显示全部楼层
YunGuo 发表于 2020-9-4 14:47
1、你的allowed_domains设置的不被过滤的域是dmoz.org,allowed_domains会按你设置的域过滤掉第一个以后的u ...

兄弟,还是不太行啊,我按你说的改了,还是有一样的错误
import scrapy

from tutorial.items import CurlieItem

class CurlieSpider(scrapy.Spider):
        name = "curlie"
        allowed_domains = ["curlie.org"]
        start_urls = ["https://curlie.org/Computers/Programming/Languages/Python/Books/",
        "https://curlie.org/Computers/Programming/Languages/Python/Resources/"
        ]
        def parse(self):
                #sel = scrapy.slection.Selector(response)
                sites =response.xpath('//div[@class="title-and-desc"]')
                items =  []
                for site in sites:
                        item = DmozItem()
                        #网址标题
                        item['title'] = site.xpath('div[@class="site-title"]/a/text()').extract()
                        #href是网址
                        item['link'] = site.xpath('div[@class="site-title"]/a/@href').extract()
                        #text是标题内容
                        item['text'] = site.xpath('div[@class="site-descr"]/text()').extract()
                        print(title,link,desc)
                        items.append(item)

                return items

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-5 11:10:40 | 显示全部楼层
YunGuo 发表于 2020-9-4 14:47
1、你的allowed_domains设置的不被过滤的域是dmoz.org,allowed_domains会按你设置的域过滤掉第一个以后的u ...

兄弟,还是不太行啊,我按你说的改了,还是有 ERROR: Spider error processing 这个错误。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-5 11:12:15 | 显示全部楼层
zhouleiqiang 发表于 2020-9-5 11:10
兄弟,还是不太行啊,我按你说的改了,还是有 ERROR: Spider error processing 这个错误。

import scrapy

from tutorial.items import CurlieItem

class CurlieSpider(scrapy.Spider):
        name = "curlie"
        allowed_domains = ["curlie.org"]
        start_urls = ["https://curlie.org/Computers/Programming/Languages/Python/Books/",
        "https://curlie.org/Computers/Programming/Languages/Python/Resources/"
        ]
        def parse(self):
                #sel = scrapy.slection.Selector(response)
                sites =response.xpath('//div[@class="title-and-desc"]')
                items =  []
                for site in sites:
                        item = DmozItem()
                        #网址标题
                        item['title'] = site.xpath('div[@class="site-title"]/a/text()').extract()
                        #href是网址
                        item['link'] = site.xpath('div[@class="site-title"]/a/@href').extract()
                        #text是标题内容
                        item['text'] = site.xpath('div[@class="site-descr"]/text()').extract()
                        print(title,link,desc)
                        items.append(item)

                return items
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-6 14:33:29 | 显示全部楼层
zhouleiqiang 发表于 2020-9-5 11:12
import scrapy

from tutorial.items import CurlieItem

你的解析函数parse没有接收response,你复制我这个运行看看。
class CurlieSpider(scrapy.Spider):
    name = 'curlie'
    allowed_domains = ['curlie.org']
    start_urls = [
        'https://curlie.org/Computers/Programming/Languages/Python/Books/',
        'https://curlie.org/Computers/Programming/Languages/Python/Resources/']

    def parse(self, response):
        content_list = response.xpath('//*[@id="site-list-content"]/div[2]/div/div[3]')
        for content in content_list:
            item = DomeItem()
            item['title'] = content.xpath('div[1]/a/text()').extract_first()
            item['link'] = content.xpath('div[1]/a/@href').extract_first()
            item['text'] = content.xpath('div[2]/text()').extract_first().strip()
            yield item
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 20:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表