pyspider创建淘女郎图片爬虫任务--出师不利

首先pyspider all启动pyspider的所有服务,然后访问 http://localhost:5000 创建一个爬虫任务:taonvlang,点开任务链接编辑 http://localhost:5000/debug/taonvlang ,默认模板:
右侧为代码编辑区, 可以在 crawl_config里做一些配置,具体可以参考官网API文档:http://docs.pyspider.org/en/latest/apis/self.crawl/#validate_certHandler共实现了三个函数,大致可以知道从函数 on_start开始,爬到后回调 index_page处理, index_page函数中可以解析出超链接继续爬取,并将爬到的内容回调给 detail_page处理, detail_page里可以解析出具体想要爬取的信息。

左侧为调试运行栏,下面的向左向右箭头用于切换步骤,run按钮可以运行指定的步骤。编写脚本抓取 https://mm.taobao.com/json/request_top_list.htm?page=1里的信息(源码后面会全部贴出),出现错误:
[E 160329 11:32:22 base_handler:194] HTTP 599: SSL certificate problem: self signed certificate in certificate chain
    Traceback (most recent call last):
      File "D:\Python27\lib\site-packages\pyspider\libs\base_handler.py", line 187, in run_task
        result = self._run_task(task, response)
      File "D:\Python27\lib\site-packages\pyspider\libs\base_handler.py", line 166, in _run_task
        response.raise_for_status()
      File "D:\Python27\lib\site-packages\pyspider\libs\response.py", line 183, in raise_for_status
        raise http_error
    HTTPError: HTTP 599: SSL certificate problem: self signed certificate in certificate chain

网上有遇到类似错误的:

一开始搜索“ HTTPError: HTTP 599: SSL certificate problem: self signed certificate in certificate chain ”这个错误,找到这个: HTTP 599: SSL certificate problem: self signed certificate in certificate chain #362,大概知道是跟curl的证书有关系。
于是下载了curl的windows版本,解压后是两个文件: ca-bundle.crt和curl.exe,也知道https的请求需要证书,也知道ca-bundle.crt就是这个证书,关键是不知道怎么让pyspider使用起来。

先验证一下,在pycharm里编写脚本:
import pycurl

#创建一个同libcurl中的CURL处理器相对应的Curl对象
c = pycurl.Curl()

c.setopt(pycurl.URL, 'https://mm.taobao.com/json/request_top_list.htm?page=1')

# 设置证书
# c.setopt(pycurl.CAINFO, 'D:\\Python27\\ca-bundle.crt')

#执行上述访问网址的操作
c.perform()
运行后输出错误:
Traceback (most recent call last):
  File "F:/PycharmProjects/test/pycurlStudy.py", line 90, in <module>
    c.perform()
pycurl.error: (60, 'SSL certificate problem: self signed certificate in certificate chain')

可以看到错误信息是和上面的一模一样的(错误码不一样这个不重要,可能pyspider有二次封装),然后把上面的验证代码的注释去掉,也就是设置一下证书,再次运行,OK!

思路是对了,关键是 不知道怎么让pyspider使用起证书ca-bundle.crt。

后来搜索到pyspider的 官网API文档: http://docs.pyspider.org/en/latest/apis/self.crawl/#validate_cert
发现有一个标记可以用 validate_cert
validate_cert - For HTTPS requests, validate the server’s certificate? default: True

也就是这样使用 self.crawl(url, callback=self.index_page, validate_cert=False)
但是运行依然报错,提示 validate_cert不存在该key,草泥马!
然后通篇搜索 D:\Python27\Lib\site-packages\pyspider目录根本没有发现validate_cert,草泥马!
但是网上搜索能找到,就是在github上,也就是说最新的pyspider源码里是有validate_cert的,然后怀疑自己的pyspider安装的是否是最新版的,当天才安装的,应该不至于,于是pip install --upgrade pyspider也提示已经是最新版了。

那么只有一个可能了:
pyspider最新源码和最新文档里都有,但是可能还未更新到最新的安装包里。于是先git下来最新的pyspider源码,把
D:\Python27\Lib\site-packages目录下的pyspider整个文件夹删除,用git下的源码里的 pyspider整体复制过去,重启pyspider all,再次浏览器中运行,成功!

对pyspider的建议,除了 validate_cert还应该设计一个标记 ca_certs,用来显示指定证书的路径。当然我这个估计又是Windows客户端思维了,网页上指定路径不知道能不能找得到本地的证书文件,呵呵~
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

asmcvc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值