好东西积累起来

关于代理IP app爬取 其他工具

ip代理池 :https://github.com/Python3WebSpider/ProxyPool

Charles 从入门到精通 - 唐巧的技术博客:https://juejin.im/entry/56488b7660b20fc9b9c2f0be

Fiddler抓包简易教程:
https://www.jianshu.com/p/9e05a2522758

代理池写法:

Scrapy: 如何设置代理
利用crawlera神器

看了不少资料,不管是代理池还是网上直接用,本质都是获取一些可用的代理,代理池在本地可以监测,例如去撞百度获取200状态码,或者甚至去直接撞目标网站(因为有些代理可以访问百度,但是无法访问目标网站),代理池的获取可以是网上免费资源,也可以是买的代理例如通过api获取(返回形式为json 或者 txt 返回值是ip和端口)或者其他形式获取。目前来看还是弄个客户端最简单直接。

代理

编写爬虫程序的神器 - Groovy + Jsoup + Sublime:
http://www.cnblogs.com/stainboy/p/make-crawler-with-groovy-and-jsoup.html

代理池:当然不错,但是每个爬虫都要配置,pyspider天生不好配置,还不如搞个应用,pc端ip自动换,所有爬虫都不用单独写了。好方便!

我喜欢的网站:尝试过了,单次爬取超过1万page就会被封。稳定网络下每分钟差不多跑350page,可以测试后面爬取poi的分割了。(因为我想用测试,而测试是有时间的),IP会封一天,第二天解开,因此后面可以分几天爬取。每天每个ip用两次,每个ip1.5万,这样就是6万行一天。每天爬虫工作近3小时。

scrapy的retry:今天在饱和爬取状态下,看到retry是180秒,这样某ip代理20秒换一次就够了

问题
爬取某网站门店返回空置,但是状态是200,想到代理池的处理,如果自建代理池,首先要撞目标网站,即便是200返回结果还是不能用,因为有些网站就是强制返回200,必须获取网页一些信息才可以,例如都会有的title信息。另外代理池比较麻烦在于不断更新,还是直接买一个客户端吧。

这样做终极的解决问题方法大不了就是每次没有爬到的,再来几次。

试用隧道解决问题
代理池更好:本以为客户端非常方便,结果发现能自动换ip的客户端只是为浏览器换了ip,没有为命令行换!因此要用sele在爬虫内。折腾一番还是通过代码换ip吧。

一种是建立代理池,不论免费付费自己先撞一遍,另外就是代理隧道,这种试用起来非常简单,不论是urllib request还是scrapy代码都写好了:

示例代码:示例代码

不同代理的区别:
这里写图片描述

代理都不管用了:

一个大型互联网公司的网站,反爬很快,一个规则写好很快就不能用了,但是我坚信还是可以爬取的。但firefox不能访问,chrome却可以,而且实际ip不是其中任何一个。

同时封两个IP

后面爬虫判断和解决逻辑:

1,是否200状态 2,部分强制返回200的 要看看能不能打印出来text或者第一步干脆直接打印 3,配置好 user-agent cookies这些 加上动态ip。 解决办法就是如果某个规则被禁止了,就访问移动端,包括android pad ios这些。

关于爬虫语言的选择:爬虫只是一个业务行为,实现工具很多除了主流的python之外,还是java groovy 甚至r语言,java好像专业司机,人家编程能力强,而且java代码实现的应用更稳健,开个手动挡更专业,开车就是饭碗;python好处在包太多,对于数据科学、机器学习很好,因为可以更多关注业务,就像开自动挡的车,开车只是工具代步才是目的,因此做数据的用python。

从爬虫趋势来看,由于反爬手段越来越多,python用户最多,造的轮子多,而且可以参考的代码多,因此python更合适。

总之python还是爬虫首选!python之外,对于数据人员、业务人员,也学习了一门语言,何乐不为呢!

mac添加环境变量:

下面视频从1分50秒开始

一个App的压力测试实战案例

下面积累几个问题:

本来要去stackoverflow去问的,后来发现那确实是个认真的网站,告诉新手要怎么问,并且输入问题之后给出一堆相关答案,做项目时间有限,其实我目前的问题已经解决了,就不在花更多时间去问了,但是这些问题要记录下来,今后慢慢解决吧:

1,datagrip安装之后 之前的sqlitestudio也变成了unicode码,在这之前是中文的,另外datagrip还不能删除表数据,不知道为什么。(目前用sqlitestudio删除数据,用json打开数据,问题暂时解决)。

2,scrapy有时按照列返回,详细见pprice,并且这个还同时返回多次,但ljlist就没这个问题。之前认为时yield的问题,但发现不行。(这个pprice本来是要自己监测房价用的,现在上系统,也先不用了)。
解决:依旧是内容解析的问题,这里取出来一个数组,例如10个,返回来10个结果,包括从10到1的数据,解决方法就是extract_first()即可。

3,用csv转码,本来也是想用csv转化,后来hy写的不好用了,因为我给的不是csv,好吧,关于什么是csv现在也没搞清楚。(目前用sublime打开也解决了)

4,链家的pprice里面,css里有下一页,但是用网页源代码却定义不到,现在来看可能是js的问题,就像爬坐标,在js里是maker但是源代码则是lng这些。
解决:确实没有 “下一页“ ,方法就是找到最大的页码,构造url,这么做有个好处就是如果返回值100,就判断需要分区或者分类型爬取以遍历完整。

上面的问题今后慢慢解决吧,估计还是个人水平不够,专业it人员应该很快解决。加油落地项目!

关于反爬虫策略:

例如链家的30页列表,就是反爬虫策略,但是爬取消费网站时发现有人使用一个1-1500万的范围,返回错误的就没事。这是最简单粗暴的方式,设置了好多反爬措施就这样被突破了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值