pyspider爬豆瓣电影实例

本文提供了一个解决爬虫遇到599错误的Python示例,通过设置validate_cert=False来忽略SSL证书验证,适用于抓取HTTPS网站。

直接copy官网实例会出现599的错误,百度了很久发现是因为证书的问题

添加这一句忽略证书 validate_cert = False

代码如下:

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# Created on 2016-05-21 20:21:32
# Project: tutorial_douban_moive

from pyspider.libs.base_handler import *
import re

class Handler(BaseHandler):
crawl_config = {
}

@every(minutes=24 * 60)
def on_start(self):
url = "http://movie.douban.com/tag/"
self.crawl(url, callback=self.index_page, validate_cert = False)       #on_start获得要爬的url然后将参数传给index_page,validate_cert = False 忽略证书

@config(age=10 * 24 * 60 * 60)
def index_page(self, response):
for each in response.doc('a[href^="http"]').items():
if re.match("https://movie.douban.com/tag/\w+", each.attr.href, re.U):    #进行正则匹配,并保存到each.attr.href中
self.crawl(each.attr.href, callback=self.list_page, validate_cert = False)      #对爬的url进行处理,只提取https://movie.douban.com/tag/\w+里面的东西

def list_page(self, response):
for each in response.doc('#content > div > div.article > div > table tr > td > div > a').items():   #这一句是来自css selector,右键要爬的链接然后审视元素(chrome是检查)选copy→ copy selector
#print each
self.crawl(each.attr.href, callback=self.detail_page, validate_cert = False)   #传递给下面处理

@config(priority=2)
def detail_page(self, response):
return {
"url": response.url,
"title": response.doc('#content > h1 > span').text(),    ##content > h1 > span 同样来自于CSS中,获得你想要的参数
"rating": response.doc('#interest_sectl > div.rating_wrap.clearbox > div.rating_self.clearfix > strong').text(),
"director": [x.text() for x in response.doc('#info > span:nth-child(1) > span.attrs > a').items()],
}

转载于:https://www.cnblogs.com/tangbinghaochi/p/6137030.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值