python爬虫——绕开杂乱无章的代码和堵住请求的302异常(2)
淘宝那次抓包,居然发现不了要抓的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网站
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· 为DeepSeek添加本地知识库
· 精选4款基于.NET开源、功能强大的通讯调试工具
· DeepSeek智能编程
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~