scrapy ValueError: invalid hostname: 解决方式scrapy don't verify ssl

  • ValueError: invalid hostname:记录一次Scrapy报错的解决方式
  • 今天用scrapy抓取了一个站点报此错,用百度直接搜索报错关键词,搜出来的结果啥跟啥,虽然国内的互联网大环境不如国外的,但是我希望国内的大型论坛站点搜索的资料有参考作用价值,很多灌水的知识很浪费检索时间,好了感慨就说到这了。
正文看这里
  • 原因分析
  • 首先 你要排除格式写错的原因, 比如单双引号的问题(如果在IDE里面我认为这些不可能会出现)

我用scrapy抓取的一个新的站点,报ValueError: invalid hostname这种错误我之前没怎么碰到过,第一反应就是把spider里面的 allowed_domains = [] 换成 [’*’],但还是不行。

  • 我点开抓取链接,发现chrome提示是一个不安全的链接,我突然就想到是不是SSL证书验证不通过,最后证明还真是。

解决方式

  • 首先在requests里面不验证SSL很简单, 直接加一个参数,如下:
import requests
# 以前12306的SSL证书通过不了验证   现在貌似可以了
res = requests.get("https://www.12306.cn", verify=False) 
  • 那么在scrapy里面该如何去做了? 也是加一些设置参数如下
  • 找到scrapy的配置文件settings.py在里面添加 几行配置文件就可以
# 不验证SSL证书
DOWNLOAD_HANDLERS_BASE = {
    'file': 'scrapy.core.downloader.handlers.file.FileDownloadHandler',
    'http': 'scrapy.core.downloader.handlers.http.HttpDownloadHandler',
    'https': 'scrapy.core.downloader.handlers.http.HttpDownloadHandler',
    's3': 'scrapy.core.downloader.handlers.s3.S3DownloadHandler',
}
DOWNLOAD_HANDLERS = {
    'https': '你的项目名.custom.downloader.handler.https.HttpsDownloaderIgnoreCNError',
}

或者可以在单独的爬虫文件里面 设置
比如我的项目文件叫wgPython,爬虫文件叫 fantastic,就可以去配置文件里面添加
文件路径 wgPython/spiders/fantastic.py

class FantasticSpider(scrapy.Spider):
    name = 'Fantastic'
    allowed_domains = ['*']
    start_urls = ["http://demo.com"]
    custom_settings = {
        #'DOWNLOAD_DELAY': 270,  # 下载延迟 270秒
        # 'LOG_LEVEL': 'DEBUG',  # 打印日志等级
        # 下面两个设置 关闭SSL证书验证
        "DOWNLOAD_HANDLERS_BASE": {
            'file': 'scrapy.core.downloader.handlers.file.FileDownloadHandler',
            'http': 'scrapy.core.downloader.handlers.http.HttpDownloadHandler',
            'https': 'scrapy.core.downloader.handlers.http.HttpDownloadHandler',
            's3': 'scrapy.core.downloader.handlers.s3.S3DownloadHandler',
        },
        "DOWNLOAD_HANDLERS": {
            'https': 'wgPython.custom.downloader.handler.https.HttpsDownloaderIgnoreCNError',
        },
    }

下面是我搜索到结果的链接 https://stackoverflow.com/questions/32950694/disable-ssl-certificate-verification-in-scrapy

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值