scrapy踩坑记录


title: scrapy踩坑记录
tags: ['scrapy','python','post','request']
date: 2021-03-11
categories: "搬砖"


安装了python3.8但是没有pip

在ubuntu上从Python 3.4版和2.7.9版开始,总是可以使用ensurepip模块来引导启动pip,具体如下:

C:\Users\Administrator>python -m ensurepip
Looking in links: c:\Users\ADMINI~1\AppData\Local\Temp\tmpcempbgwg
Processing c:\users\administrator\appdata\local\temp\tmpcempbgwg\setuptools-47.1
.0-py3-none-any.whl
Processing c:\users\administrator\appdata\local\temp\tmpcempbgwg\pip-20.1.1-py2.
py3-none-any.whl
Installing collected packages: setuptools, pip
Successfully installed pip-20.1.1 setuptools-47.1.0

爬虫https,不安全的问题

Python2/3 解决访问Https时不受信任SSL证书问题

ssl._create_default_context = ssl._create_unverified_context

安装scrapy遇到错误

  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/f2/16/3eb9c66a7bfb5220c7bcbaaac33d359fe8a157b028959cd210983749b2e0/Twisted-21.2.0-py3-none-any.whl (3.1 MB)
     |███████████████████████████████▌| 3.0 MB 262 kB/s eta 0:00:01
ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE. If you have updated the package versions, please update the hashes. Otherwise, examine the p
ackage contents carefully; someone may have tampered with them.
    Twisted[http2]>=17.9.0 from https://pypi.tuna.tsinghua.edu.cn/packages/f2/16/3eb9c66a7bfb5220c7bcbaaac33d359fe8a157b028959cd210983749b2e0/Twisted-21.2.0-py3-none-
any.whl#sha256=aab38085ea6cda5b378b519a0ec99986874921ee8881318626b0a3414bb2631e (from scrapy):
        Expected sha256 aab38085ea6cda5b378b519a0ec99986874921ee8881318626b0a3414bb2631e
             Got        c9b2f7ffbc1fb53011ba7c6500d784a78ef9e1f8274fa472eebc1eab930b216b

换个pip的源解决了

(venv) C:\Users\Administrator\Desktop\爬虫项目文件夹\scrapyDemo>pip3 install scrapy -i https://pypi.mirrors.ustc.edu.cn/simple

使用python2 环境安装scrapy使用的时候报错from contextlib import suppress

原因

因为我之前安装过python3,我的环境中的queuelib的版本为1.6.0,是最新版本,但是这个包刚刚好再1.6.0取消了对python2的支持。

解决办法

下载queuelib1.5.0的whl,安装一下。

下载地址https://www.cnblogs.com/klb561/p/9271322.html

No module named 'scrapy.xlib'

# scrapy1.7版本及以前
from scrapy.xlib.pydispatch import dispatcher
# 之后
from pydispatch import dispatcher

scrapy 数据保存json文件

# pipelines
#!/usr/bin/python
# -*- coding: utf-8 -*-
# 导入 JsonItemExporter
from scrapy.exporters import JsonItemExporter
import time


class SpiderPipeline(object):
    # 构造方法(初始化对象时执行的方法)
    def __init__(self):
        # 使用 'wb' (二进制写模式)模式打开文件
        time_str = str(time.strftime('%Y_%m_%d_%H_%M_%S',time.localtime(time.time())))
        print time_str
        self.json_file = open(time_str + '_data.json', 'wb')
        # 构建 JsonItemExporter 对象,设定不使用 ASCII 编码,并指定编码格式为 'UTF-8'
        self.json_exporter = JsonItemExporter(self.json_file, ensure_ascii=False, encoding='UTF-8')
        # 声明 exporting 过程 开始,这一句也可以放在 open_spider() 方法中执行。
        self.json_exporter.start_exporting()

    # 爬虫 pipeline 接收到 Scrapy 引擎发来的 item 数据时,执行的方法
    def process_item(self, item, spider):
        # 将 item 存储到内存中
        self.json_exporter.export_item(item)
        return item

    def close_spider(self, spider):
        # 声明 exporting 过程 结束,结束后,JsonItemExporter 会将收集存放在内存中的所有数据统一写入文件中
        self.json_exporter.finish_exporting()
        # 关闭文件
        self.json_file.close()
# settings
ITEM_PIPELINES = {
   'NsmcSpider.pipelines.SpiderPipeline': 300,
}
其他方法

命令行执行

scrapy crawl spider -o result.json -t json

crawl spider -o result.json -s FEED_EXPORT_ENCODING=UTF-8

爬虫速度慢或者速度不稳定的另外一种解决办法

把cookie给禁掉

custom_settings = {"COOKIES_ENABLED":False}

使用scrapy.http.Request数据不全的问题

记得加上报文头

    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36",
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",# 这一条一定要加上
    }

出现错误Filtered offsite request to

原因:allowed_domains和实际采集的网页有出入

解决办法:

        yield Request(url=home, method='get', headers=self.headers,dont_filter=True,
                      meta={"channel": response.meta["channel"], },
                      callback=self.parse_link)

加上dont_filter=True

或者 将allowed_domains的内容改一下,改成一级域名,能够和后面的匹配的上。

报错Filtered duplicate request: GET xxx - no more duplicates

原因: 爬取的url重复了,所以RedisSpider模块默认会记录爬过的url,会把后面出现以前爬过的url去掉,导致重新开启程序爬取之前爬过的url,都被去除掉后就爬不到东西。

解决办法:

加上dont_filter=True

scrapy有一个基于链接的去重,加上dont_filter=True可以完整的采集,去重可以放到入库的时候再处理。

ValueError: check_hostname requires server_hostname

可能是开了代理

进行请求的时候使用urlencode进行转码报错TypeError: not a valid non-string sequence or mapping object

使用quote_plus

禁止重定向

yield Request(url=final, method='get', headers=self.headers,cookies=cookie,
              meta={"channel": response.meta["channel"], "start_hash": response.meta['start_hash'],
                    "dont_redirect":True,'handle_httpstatus_list': [302]},
              callback=self.parse_item)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容