谈谈哥的python爬虫书写之路
为了做一个百度网盘搜索引擎,哥开始研究爬虫,从此迷上爬虫而一发不可收拾,现在就大概谈谈哥的爬虫之路,顺便给出引擎:http://www.quzhuanpan.com
首先基本的 Python 语法你要了解吧,推荐一本书《Python基础教程》,很适合入门。
其次分析你的爬虫需求。程序具体 流程是怎么样的?把程序的大致框架搭起来。另外可能还有哪些难点?
然后了解一下一般写爬虫需要用哪些库,这些库可以很好的帮助你解决很多问题。推荐强悍的 Requests: HTTP for Humans 另外还有其他一些库 如 urllib2 BeautifulSoup 都可以了解下。
动手开始写了,遇到问题 Google 即可,Google 不行就上知乎问,我遇到的一个问题就是知乎私信大牛解决的。在写的过程中还会学到很多相关的知识,比如说HTTP协议, 多线程 等等。
这里大概说说几种特殊情况处理:
1、 对于登陆情况的处理
这种情况属于post请求,即先向服务器发送表单数据,服务器再将返回的cookie存入本地。
2、使用cookie登陆
使用cookie登陆,服务器会认为你是一个已登陆的用户,所以就会返回给你一个已登陆的内容。因此,需要验证码的情况可以使用带验证码登陆的cookie解决。
3、适用情况:限制IP地址情况,也可解决由于“频繁点击”而需要输入验证码登陆的情况。 这种情况最好的办法就是维护一个代理IP池,网上有很多免费的代理IP,良莠不齐,可以通过筛选找到能用的。对于“频繁点击”的情况,我们还可以通过限制爬虫访问网站的频率来避免被网站禁掉
4、适用情况:限制频率情况。
Requests,Urllib2都可以使用time库的sleep()函数:
5、有些网站会检查你是不是真的浏览器访问,还是机器自动访问的。这种情况,加上User-Agent,表明你是浏览器访问即可。有时还会检查是否带Referer信息还会检查你的Referer是否合法,一般再加上Referer。
谢谢看官
谈谈哥的python爬虫书写之路的更多相关文章
- python爬虫成长之路(一):抓取证券之星的股票数据
获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为python3.5,意在抓取证券之星上当天所 ...
- python 爬虫学习之路
2016-6-18 --今天实现了第一个用urllib2实现的爬虫程序. --过程中发现 req = urllib2.Request(url,headers = headers) 总是报错: 主要原因 ...
- python爬虫成长之路(二):抓取代理IP并多线程验证
上回说到,突破反爬虫限制的方法之一就是多用几个代理IP,但前提是我们得拥有有效的代理IP,下面我们来介绍抓取代理IP并多线程快速验证其有效性的过程. 一.抓取代理IP 提供免费代理IP的网站还挺多的, ...
- python爬虫学习之路-遇错笔记-1
当在运行爬虫时同时开启了Fidder解析工具时(此爬虫并不是用于爬取手机端那内容,而是爬去电脑访问的网页时),访问目标站点会遇到以下错误: File "C:\Users\litao\AppD ...
- Python爬虫-百度模拟登录(二)
上一篇-Python爬虫-百度模拟登录(一) 接上一篇的继续 参数 codestring codestring jxG9506c1811b44e2fd0220153643013f7e6b1898075 ...
- Python爬虫-百度模拟登录(一)
千呼万唤屎出来呀,百度模拟登录终于要呈现在大家眼前了,最近比较忙,晚上又得早点休息,这篇文章写了好几天才完成.这个成功以后,我打算试试百度网盘的其他接口实现.看看能不能把服务器文件上传到网盘,好歹也有 ...
- Python爬虫——城市公交、地铁站点和线路数据采集
本篇博文为博主原创,转载请注明. 城市公交.地铁数据反映了城市的公共交通,研究该数据可以挖掘城市的交通结构.路网规划.公交选址等.但是,这类数据往往掌握在特定部门中,很难获取.互联网地图上有大量的信息 ...
- Python爬虫之路——简单网页抓图升级版(添加多线程支持)
转载自我的博客:http://www.mylonly.com/archives/1418.html 经过两个晚上的奋斗.将上一篇文章介绍的爬虫略微改进了下(Python爬虫之路--简单网页抓图),主要 ...
- Python 爬虫从入门到进阶之路(八)
在之前的文章中我们介绍了一下 requests 模块,今天我们再来看一下 Python 爬虫中的正则表达的使用和 re 模块. 实际上爬虫一共就四个主要步骤: 明确目标 (要知道你准备在哪个范围或者网 ...
随机推荐
- C++ 重写重载重定义区别
C++ 重写重载重定义区别 (源自:http://blog.163.com/clevertanglei900@126/blog/static/111352259201102441934870/) 1 ...
- 【android开发】10款实用的Android UI工具,非常有用!
移动应用的UI设计就好似达摩克利斯之剑,一方面,一个视觉.交互.体验良好的UI可以加强应用在用户心目中的形象和识别性.而另一方面,一个体验糟糕的UI设计不仅无法让用户沉浸在应用中,还会造成用户对应用产 ...
- Activex打包于发布完整版---微软证书制作
众所周知,Activex组件没有进行有效的签名,在IE上无法安装的,除非你让用户手工开启“接收任何未签名的ActiveX”,这个很明显不现实.而组件签名需要证书,证书从哪里来,你可以选择付1000到3 ...
- TestNG 六 测试结果
一.成功.失败和断言 如果一个测试没有抛出任何异常就完成运行或者说抛出了期望的异常(参见@Test注解的expectedExceptions属性文档),就说,这个测试时成功的. 测试方法的组成常常包括 ...
- JBoss 系列十八:使用JGroups构建块RpcDispatcher构建群组通信应用
内容概要 本部分说明JGroups构建块接口RpcDispatcher,具体提供一个简单示例来说明如何使用JGroups构建块RpcDispatcher构建群组通信应用. 示例描述 类似Message ...
- 如何使用WinDriver为PCIe采集卡装驱动
如何使用WinDriver为PCIe采集卡装驱动 第一步:使用WinDriver生成驱动 1.运行Drier Wizard 2.点击New host driverproject 3.在列表中,选择待安 ...
- UITableViewCell 添加 checkbox 多选
TableViewCell多选: CheckBox; - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndex ...
- Loadrunner关于页面检查的几个函数详解
环境:Loadrunner版本:8.0自建一个test.html文件:<html><head><meta name="google1" content ...
- 小程序show-confirm-bar完成按钮不能隐藏
<textarea>show-confirm-bar="false"></textarea> 不生效怎么办>? 改成 show-confir ...
- Executor / Executors / ExecutorService /
Java SE5的java.util.concurrent包中的执行器(Executor)将为你管理Thread对象,从而简化了并发编程.Executor在客户端和执行任务之间提供了一个间接层,Exe ...