#Python爬虫#前几天我总结了一下使用nodejs写爬虫的一些常用的技巧,并且表示写爬虫没有最好的语言,只有最合适的,选择自己最熟悉的最顺手的语言最好。然而,最近在爬取一些数据的过程中需要处理HTML表格,虽然可以自己手动处理,但是有现成的轮子干嘛不用?写爬虫就是为了获取数据,经过数据的分析处理得到有趣的结论,为了能够尽快的得到结论,根据场景选择合适编程语言就显得很重要,尤其当所需要的工具是语言独占的时候(其他语言也许有移植版,但是社区活跃度显然没有原版高),比如说pandas。
想把表格数据转换成dataframe只需要一句话:
pandas把表格数据转换成dataframepandas的这个功能真的深深的戳中了我的痛点,于是把整个爬虫用python重新写了一遍,这里也和上一次总结nodejs一样,总结一下python写爬虫的常用方法,方便以后复用,提高效率。
用nodejs写爬虫的常用技巧传送门:牛逼,看完它,你就可以自己开发爬虫了
注:本文代码均基于python3.6.5版本,使用其他版本有可能导致运行错误。
请求网页方法
python请求网页一般会使用requests这个库,正如其介绍的那样:builtforhumanbeings。相当的通俗易懂,简单易用。
请求网页方法伪装浏览器与串改请求头
其实伪装浏览器的本质就是修改请求头(requestheader),来让服务器难以辨别请求是来自爬虫还是真实用户的浏览器。通常设置User-Agent即可应对大部分网站。
伪装浏览器与串改请求头获取和设置Cookies
这里就涉及到requests发送请求后的返回值了,也就是上面例子中的r。用户存储在浏览器的Cookies通常是浏览器根据返回头(responseheader)中的Set-Cookie的值来设置的,在python中这样获取:
获取和设置Cookies取消自动重定向
nodejs的技巧文章中解释过,自动重定向可能会使用不正确的Cookie导致结果永远不对,因此有时需要取消这个功能:
取消自动重定向页面解析
我喜欢使用beautifulsoup:
页面解析使用代理
难免的情况,不论是IP被封,还是外网无法访问,均要使用代理来绕过限制:
教你科学上网:程序员必备:正确的科学上网方式
使用代理多线程并行爬取
看了nodejs版本的朋友需要注意下,这里是多线程了,不是多进程。这里就提供一个线程池的模板:
多线程并行爬取python爬虫我写的不多,本文只能分享这些基本常用的方法,