这段时间一直断断续续的学习python爬虫,主要是想后面如果自己想要用一些数据的话有能力去获取并处理。视频资源当然还是从B站上找的 (学习地址)。其中主要就看了波波老师讲的那一部分,后面由另一个老师补充的有关异步爬虫的就看了一两节就没看了。主要是觉得前面对爬虫有了一些认识,然后好多东西虽然跟着老师做虽然做了下来,但真正留下来的东西却不多。只有当自己开始真正要用到爬虫相关的东西,进行实战的时候才会真正的掌握。所以就视频的学习就暂时告一段落。在这里做一个记录,凭借着一些印象和记忆吧,把现在还能记得的东西总结一下。
爬虫的概念
简单地理解爬虫就是利用程序通过搜索引擎在较短时间内在网上获取大量的资源,然后对这些资源进行存储、处理、分析进而得到有价值的东西。如果想要遵守所爬网站对应的爬取规则,可以去查看网站对应的robots.txt
。
爬虫相关
第三方库:
-
requests——重要是用来向特定url发起请求的。
其中requests库是python中相对于urllib库比较简单的一个http库,通过requests库中的请求方法,常用的是get()
和post()
方法。对于这两个方法的区别。直观理解就是顾名思义。get
是通过参数传递的方法从服务器中获取数据,post
是向服务器传送数据。可能正是因为这样,所以在爬虫中经常用到的都是get()
方法。对于这两个的更详细的区别,可以参考这篇博客Python Requests库 Get和Post的区别 -
beautifulsoup 是一个可以从HTML或XML文件中提取数据的Python库
也就是一个解析网页的东西,其功能和正则表达式、xpath一样。
框架
- selenium——用来模拟用户真实使用浏览器的过程。
在教程中使用了selenium来模拟登录古诗文网、12306。还有一个地方使用selenium是因为那个问政平台所加载的数据是动态加载的,所以就有用到先让selenium模拟浏览页面,然后再用scrapy框架进行数据的爬取。 - scrapy框架——是一个用python写的爬虫框架,重要的就是这张图。
后面会用爬虫来做一些有意思的小项目。
常见问题记录
- 当学习到处理中间件请求的时候终端一直报错更换不同的IP有不同的错。一种是
Connection was refused by other side: 10061: 由于目标计算机积极拒绝,无法连接
。第二种是TCP connection timed out: 10060: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
网上查看的解决方法很多是说防火墙、网络设置或者浏览器勾选自动检测等。但都不靠谱,尤其是最后一种,我们就是要指定代理ip,如果自动检测的话,那不就是事与愿违了吗。
我认为被拒绝
说明这个ip是在存活期内的,只是被封了;无响应
说明ip以及对应的端口号过了存活期,失效了。
解决方法
:不停寻找可用ip,那些刚刚入库的ip会靠谱些。西拉ip