前言

前段时间在用scrapy爬取某个网站时一直报521错误,在seeting.py里设置HTTPERROR_ALLOWED_CODES= [521]后会发现返回的response是一段加密的js代码。这段js代码是动态取得cookie信息的(但是只有一个value,故放弃了使用python库去执行js的打算),最后利用浏览器打开网页将其cookie手动添加到爬虫中会正常返回数据,最后找到了Ghost.py这个库去模拟浏览器打开网站行为并动态获取cookie信息的办法。

具体步骤

.安装Ghost.py

sudo pip install Ghost.py==0.1.2

返回最新的cookie

from ghost import Ghost

from scrapy import log

import re

class Cookieutil:

def __init__(self,url):

log.msg('init cookieutil class ,will be get %s cookie information!' %url, log.INFO)

gh = Ghost(download_images=False,display=False)

gh.open(url)

gh.open(url)

gh.save_cookies("cookie.txt")

gh.exit()

def getCookie(self):

cookie = ''

with open("cookie.txt") as f:

temp = f.readlines()

for index in temp:

cookie += self.parse_oneline(index).replace('\"','')

return cookie[:-1]

def parse_oneline(self,src):

oneline = ''

if re.search("Set-Cookie",src):

oneline = src.split(';')[0].split(':')[-1].strip()+';'

return oneline

scrapy的spider定时生成和调用cookie信息

这里只贴上主要的代码

headers={

'Cookie':'',

'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2',

}

headers['Cookie'] = Cookieutil('http://www.dmoz.org.cn/').getCookie()

def parse_page(self,response):

if int(time.time())-self.begin_time>3600:

print 'get a new cookie arrgment'

print self.headers['Cookie']

self.begin_time = int(time.time())

try:

self.headers['Cookie'] = Cookieutil('http://www.dmoz.org.cn/').getCookie()

except:

time.sleep(120)

self.headers['Cookie'] = Cookieutil('http://www.dmoz.org.cn/').getCookie()

结语

不过有个比较纠结的问题是Ghost.py需要依赖webkit,以致于在本地开发中能够正常运行,但是放到服务器中直接报错(Exception: Ghost.py requires PySide or PyQt4)。

目前为止还没找到好的解决办法

python动态获取cookie_scrapy爬虫使用Ghost.py动态获取cookie相关推荐

  1. python爬虫动态解析js_Python爬虫实战入门五:获取JS动态内容—爬取今日头条

    F12打开网页调试工具: 选择"网络"选项卡后,发现有很多响应,我们筛选一下,只看XHR响应.(XHR是Ajax中的概念,表示XMLHTTPrequest)然后我们发现少了很多链接 ...

  2. python模拟登记获取cookie_Python爬虫实战入门四:使用Cookie模拟登录——获取电子书下载链接...

    在实际情况中,很多网站的内容都是需要登录之后才能看到,如此我们就需要进行模拟登录,使用登录后的状态进行爬取.这里就需要使用到Cookie. 使用Cookie进行模拟登录 现在大多数的网站都是使用Coo ...

  3. 爬虫采集-基于webkit核心的客户端Ghost.py [爬虫实例]

    对与要时不时要抓取页面的我们来说,是痛苦的~ 由于目前的Web开发中AJAX.Javascript.CSS的大量使用,一些网站上的重要数据是由Ajax或Javascript动态生成的,并不能直接通过解 ...

  4. 爬虫python代码广告_零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)...

    我是怎么想的,在新浪博客里写代码教程. 这篇博客的内容同步到了CSND博客中,那里不限制外链,也可以复制代码. http://blog.csdn.net/sinat_41310868/article/ ...

  5. python读取html_从零开始的Python爬虫教程(一):获取HTML文档

    前言:在上一节从零开始的Python爬虫教程(零):粗识HTML结构中,粗略给大家介绍了一下HTML文档,是为了在接下来的教程中让大家更容易理解和掌握.在接下来的教程中,需要大家提前安装python3 ...

  6. [转载] Python新手写出漂亮的爬虫代码1——从html获取信息

    参考链接: Python中从用户获取多个输入 Python新手写出漂亮的爬虫代码1 初到大数据学习圈子的同学可能对爬虫都有所耳闻,会觉得是一个高大上的东西,仿佛九阳神功和乾坤大挪移一样,和别人说&qu ...

  7. 零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)

    好,现在进入高阶代码篇. 目的: 爬取昆明市中学的兴趣点POI. 关键词:中学 已有ak:9s5GSYZsWbMaFU8Ps2V2VWvDlDlqGaaO 昆明市坐标范围: 左下角:24.390894 ...

  8. Python之网络爬虫(selenium爬取动态网页、爬虫案例分析、哈希算法与RSA加密)

    文章目录 一.selenium爬取动态网页 二.爬虫案例分析 三.哈希hash算法与RSA加密 一.selenium爬取动态网页 1.动态网页认知 爬虫其实就是在模仿浏览器的行为 应对要多次数据的交互 ...

  9. 太大如何翻页固定表头_外行学 Python 爬虫 第六篇 动态翻页

    前面几篇文章,初步完成了从网络请求.数据解析.数据存储的整个过程,完成了一个爬虫所需的全部功能.但是通过对数据库中数据的分析会发现数据库中的元件数量比网站上的元件数量少了很多.前面的实现过程通过解析网 ...

  10. python ghost.py使用笔记

    ghost.py目前已更新到0.2版本,变化有点大,使用方法上跟0.1还是有点差别的,本文仅以0.1.1版本为例,因为我安装的是这个版本 我用ghost主要用来模拟在网站上的操作,比如登录之类的,当然 ...

最新文章

  1. python变量域名_Python实现从url中提取域名的几种方法
  2. linux dns 添加mx,linux dns配置
  3. 神经网络与机器学习 笔记—Rosenblatt感知机
  4. android 修改framework下资源文件后如何编译
  5. 如何通过牛顿方法解决Logistic回归问题 By 机器之心2017年8月09日 16:30 本文介绍了牛顿方法(Newton's Method),以及如何用它来解决 logistic 回归。log
  6. POE交换机应用技术知识大全
  7. 今天看到“黑涩会MM”了
  8. 非平坦结构元matlab,基于MATLAB的巴特沃思型数字滤波器设计.doc
  9. python3集合_Python3 集合
  10. java比对文本文件_Java编程实现比对两个文本文件并标记相同与不同之处的方法...
  11. 老化测试相关知识点介绍
  12. teambition 还是jira_研发管理工具之 Id 比较(Jira/Teambition/TAPD/禅道)
  13. Java 求解加油站
  14. 微信文章数据 API数据接口
  15. 计算机重装系统后黑屏,电脑重装系统后黑屏怎么办
  16. 数云融合丨知识图谱在烟草零售数字化转型中的应用
  17. Python3网络爬虫:今日头条新闻App的广告数据抓取
  18. 阿里云查找或修改对应实例的远程连接密码
  19. Anomaly Detection in Quasi-Periodic TimeSeries Based on Automatic Data Segmentation and Attentional
  20. SSD固态硬盘优化方案,让新买的SSD速度不再慢

热门文章

  1. 供应链服务产业数据知多少
  2. Julia : 数组(矩阵)的条件过滤
  3. Julia:几个简单的类型转换
  4. 龙蜥操作系统(Anolis OS)正式登陆阿里云公共云
  5. 金融行业灾备压力大?看中和农信如何从容应对
  6. 让基础设施代码化更加容易,pulumi 都做了些什么?
  7. OpenInfra中国日志愿者第三次会议召开
  8. 【手写数字识别】基于matlab GUI BP神经网络手写数字识别(手写+带面板)【含Matlab源码 1196期】
  9. 【车间调度】基于matlab模拟退火算法求解车间调度(jobshop-3)问题【含Matlab源码 1082期】
  10. 【OFDM通信】基于matlab OFDM通信系统仿真【含Matlab源码 315期】