1、基本抓取网页
get方法
post方法
2、使用代理IP
开发爬虫过程中经常会遇到IP被封掉的情况,这时就需要用到代理IP;
3、Cookies处理
cookies是某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密
4、伪装成浏览器
某些网站反感爬虫的到访,于是对爬虫一律拒绝请求。所以用urllib2直接访问网站经常会出现HTTP Error 403: Forbidden的情况
对有些 header 要特别留意,Server 端会针对这些 header 做检查
User-Agent 有些 Server 或 Proxy 会检查该值,用来判断是否是浏览器发起的 Request
Content-Type 在使用 REST 接口时,Server 会检查该值,用来确定 HTTP Body 中的内容该怎样解析。
5、页面解析
对于页面解析最强大的当然是正则表达式,这个对于不同网站不同的使用者都不一样,就不用过多的说明
6、验证码的处理
对于一些简单的验证码,可以进行简单的识别。本人也只进行过一些简单的验证码识别。但是有些反人类的验证码,比如12306,可以通过打码平台进行人工打码,当然这是要付费的。
7、多线程并发抓取
单线程太慢的话,就需要多线程了,这里给个简单的线程池模板 这个程序只是简单地打印了1-10,但是可以看出是并发的。
虽然说python的多线程很鸡肋,但是对于爬虫这种网络频繁型,还是能一定程度提高效率的。
1. Cnblogs - 博客园爬虫
使用Urllib库实现博客园"最新文章"的爬取,可以自行扩展为全站爬虫,但是要注意它的接口。
2.Moments - 朋友圈爬虫
基于自动化测试工具Appium的微信朋友圈爬虫,模拟登录、抓取动态、保存数据。
3.Bilibili - B站爬虫
模拟登录B站并识别滑动验证码。破解滑动验证码的思路主要沿袭崔大破解极验的思路,登录、获取验证码Image对象、打码平台识别、本地转化识别结果、Selenium模拟滑动等。
4.DouYin - 抖音爬虫
基于Mitmdump的抖音短视频爬取,包括视频名称、作者名称、获赞数、转发量等重要信息的获取。
5.Crack_Jianshu - 简书爬虫
为了照顾简书,完成了简书的模拟登录并识别简书的点触式验证码,破解验证码的思路基本与滑动验证码相同。
6.Selenium_163 - 网易163邮箱爬虫
模拟登录网易163邮箱,并发送SOS邮件。主要是为了对iframe子节点的训练。
7.City_58 - 58房屋信息爬虫
使用Scrapy框架爬取58同城的出租房信息,并包含下级网页数据的爬虫,项目难度较大,可根据能力练习。
通过selenium 进行仿人工登录,利用python中的cv2模块进行滑块认证登录,进而提取网站信息,并保存
针对网站利用selenium 进行登录,获得验证码,通过图像识别技术获得验证码中的文字,进行自动登录,后获得数据