淘宝那次抓包,居然发现不了要抓的url位置,三星中。。。

  不过不怕,不就是没法快点分析出包嘛,下次用phantomJS硬杠,或者有时间慢慢分析也好。

  今天挑战一个稍微好爬的网站:狗搬家(误)

  打开后台代码一看,山口山

  

  一堆<p style="display:none;">直接影响分析数据。

  有个运用无头浏览器的爬虫使用了图像分析法,不过老夫真心认为这玩意还是不要随便用比较好,就像一些简单的网站不要用phantomJS一样

  稍微分析ip那里的代码就可以找到解的(避免查水表不发布源代码)去除html标签,连着里面的元素去除什么的,用regex还是比较简单的

  结果想再爬这个网页时,出现了302重定向

  这里,直接ban掉重定向没有多大用,关键是识别到状态再根据情况重新请求。

  从stackoverflow一哥们那里搞来了这段代码:

self.log("(parse_page) response: status=%d, URL=%s" % (response.status, response.url))
if response.status in (302,) and 'Location' in response.headers:
self.log("(parse_page) Location header: %r" % response.headers['Location'])
yield Request(response.headers['Location'],callback=self.parse,meta=self.meta)

  这段代码判定返回状态,并根据情况决定要不要重传。(这里应该有urljoin的,不知为何我安装的scrapy没有)

  结果是yield后面的代码没有运行就退出了。

  还是一样去stackoverflow求助,结果有人告诉我,ban了filter。

  dont_filter这个参数开始是为了防止程序死循环设计的,然鹅在这个框架就成了问题,它不能yield第二层request

  初始化request时,dont_filter=true,程序就会不管3721把请求提交,然后数据就返回了

  幸好这里的302不会一直302,只要cookies对上了,返回的就是200和网页代码,不会出现栈溢出

self.log("(parse_page) response: status=%d, URL=%s" % (response.status, response.url))
if response.status in (302,) and 'Location' in response.headers:
self.log("(parse_page) Location header: %r" % response.headers['Location'])
yield Request(response.headers['Location'],callback=self.parse,meta=self.meta,dont_filter=True)

  后来仔细看源码。。。特码这个教程只解决了display:none和302的问题,实际的数据还是有毒。。。

  看了下http://www.cnblogs.com/w-y-c-m/p/6879551.html这位兄台的方法,姿势get到了!不仅知道了如何反混淆,还学会了debug网站

python爬虫——绕开杂乱无章的代码和堵住请求的302异常(2)的更多相关文章

  1. python爬虫如何POST request payload形式的请求

    python爬虫如何POST request payload形式的请求1. 背景最近在爬取某个站点时,发现在POST数据时,使用的数据格式是request payload,有别于之前常见的 POST数 ...

  2. Python爬虫教程(16行代码爬百度)

    最近在学习python,不过有一个正则表达式一直搞不懂,自己直接使用最笨的方法写出了一个百度爬虫,只有短短16行代码.首先安装必背包: pip3 install bs4 pip3 install re ...

  3. Python爬虫个人梳理(代码有空写)

    这里多是摘抄的,只是用于个人理解. 1.urlopen().read()是爬取网页的内容,出来可能是一堆的源代码.和我们右击网页查看是一样的. 2.当用到http请求的时候,我们可以使用Request ...

  4. Python爬虫_qq音乐示例代码

    import requests url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp' for x in range(5): headers ...

  5. python爬虫(五)_urllib2:Get请求和Post请求

    本篇将介绍urllib2的Get和Post方法,更多内容请参考:python学习指南 urllib2默认只支持HTTP/HTTPS的GET和POST方法 urllib.urlencode() urll ...

  6. Python爬虫常用之登录(三) 使用http请求登录

    前面说了使用浏览器登录较为简单,不需要过多分析,而使用请求登录恰恰就是以分析为主. 开发一个请求登录程序的流程: 分析请求->模拟请求->测试登录->调整参数->测试登录-&g ...

  7. python接口自动化测试四:代码发送HTTPS请求

    HTTPS: get: url = 'https://www.juhe.cn/docs/api/id/39' r = requests.get(url)                       # ...

  8. python接口自动化测试三:代码发送HTTP请求

    get请求: 1.get请求(无参数): 2.get请求(带参数): 接口地址:http://japi.juhe.cn/qqevaluate/qq 返回格式:json 请求方式:get post 请求 ...

  9. 【python爬虫】scrapy入门8:发送POST请求

    scrapy基础知识之发送POST请求与使用 FormRequest.from_response() 方法模拟登陆 https://blog.csdn.net/qq_33472765/article/ ...

随机推荐

  1. Chrome Google浏览器下载

    https://support.google.com/chrome/answer/95346?co=GENIE.Platform%3DDesktop&hl=zh-Hans    下载和安装 G ...

  2. zabbix的安装部署及自定义监控的实现

    此篇感谢我的小师傅. 1. Zabbix主要功能和优劣势说明 1. Zabbix主要功能和优劣势说明 1.1 Zabbix主要功能: 1)Application monitoring 应用监控 数据库 ...

  3. poj3278Catch That Cow

    Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 88361   Accepted: 27679 ...

  4. 查看oracle数据库是否为归档模式

    查看oracle数据库是否为归档模式   [1]   1.select name,log_mode from v$database;   NAME LOG_MODE   --------------- ...

  5. 验证IP地址的有效性

    实力说明 IP地址是网络上每台计算机的标识,在浏览器中输入的网址也是要经过DNS服务器转换为IP地址才能找到服务器. 关键技术 正则表达式

  6. Java编程基础篇第二章

    关键字 概述:被Java语言赋予特定含义的单词. 特点:组成关键字的字母全部为小写字母. 标识符 概述:给类,接口,包,方法,常量起名字时的字符序列 组成规则:英文大小写字母,数字,$和— 命名规则. ...

  7. SQLSERVER 检查内容

    巡检内容: 1系统信息A. 机器名称:B. 硬件配置:Intel(R) CPU E5-2630 2.3GHz(2处理器),24核,16G内存C. 操作系统版本:Windows Server 2008 ...

  8. Gym 101194C / UVALive 7899 - Mr. Panda and Strips - [set][2016 EC-Final Problem C]

    题目链接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?opti ...

  9. SparkSQL与Hive on Spark的比较

    简要介绍了SparkSQL与Hive on Spark的区别与联系 一.关于Spark 简介 在Hadoop的整个生态系统中,Spark和MapReduce在同一个层级,即主要解决分布式计算框架的问题 ...

  10. OA流程分析

    OA流程分析: 1. 流程定义:可视化可拖拽的流程环节设置,流程定义完成后保存在数据表中,字段有流程ID,名称,流程流转环节. 2. 画业务表单,新建业务数据表. 3. 表单数据填好后,启动流程: