分享好友 最新动态首页 最新动态分类 切换频道
【Python爬虫学习】总结了八种学习爬虫的常用技巧
2024-12-29 06:47

此篇内容小结

【Python爬虫学习】总结了八种学习爬虫的常用技巧

 
 

基本网页获取

首先向一个 Url 地址发送请求,随后远端服务器将会返回整个网页。

常规情况下,当我们使用浏览器访问网站也是这么一个流程:用户在浏览器输入一个地址,浏览器将会发送一个服务器请求,服务器返回请求的内容,随后浏览器解析内容。其次,发送请求后,将会得到整个网页的内容。最后,通过我们的需求去解析整个网页,通过正则或其它方式获取需要的数据。

  • requests.get() ----get请求方法
 
  • post请求方法
 

最简单的一个爬虫示例:获取百度页面

 
  • import requests:引入 requests 模块
  • url=“[https://www.baidu.com/]”:设置要请求的url值,这里为百度。
  • headers:为了更好的伪造自己是浏览器访问的,需要加一个头,让自己看起来是通过浏览器访问。
  • html=requests.get(url,headers=headers):requests使用get方法,请求网站为url设置的值,头部为headers。
  • print(html.text):显示返回的值html中的text文本,text文本则为网页的源代码。

接下来使用BeautifulSoup库解析,使用bs4可以快速的让我们获取网页中的一般信息,例如我们需要获取刚刚得到网页源码中的title标题,首先引入 bs库。

随后使用 beautifulsoup 进行解析,html.parser 代表html的解析器,可以解析html代码;其中 html.text 为网页源码为html。

完整代码示例

 

以上代码可能会出现编码不一致,出现“乱码”的情况,可以通过以下方式解决

 
 

以上是最最简单的一个爬虫示例,仅针对刚学爬虫的新手,对已入门的朋友们没有什么挑战性,跟高手过招才过瘾呀。

爬虫ip被封的6个解决方法

方法1

  • IP必须需要,如果有条件,建议一定要使用代理IP
  • 在有外网IP的机器上,部署爬虫代理服务器
  • 你的程序使用轮训替换代理服务器来访问想要采集的网站,就算具体IP被屏蔽了,你可以直接把代理服务器下线就OK,程序逻辑不需要变化。

方法2

  • ADSL+脚本,监测是否被封,然后不断切换ip
  • 设置查询频率限制,调用该网站提供的服务接口

方法3

  • useragent伪装和轮换
  • cookies的处理,有的网站对登陆用户没有那么严

方法4

尽可能的模拟用户行为,比如

  • UserAgent经常换一换
  • 访问时间间隔设长一点,访问时间设置为随机数
  • 访问页面的顺序也可以随机来

方法5

网站封IP的依据一般是单位时间内特定IP的访问次数

将采集的任务按目标站点的IP进行分组,通过控制每个IP在单位时间内发出任务的个数来避免被封。当然,这个前提是采集很多网站,如果只需要采集一个网站,那么只能通过多外部IP的方式来实现了。

方法6

对爬虫抓取进行压力控制,可以考虑使用代理的方式访问目标站点。例如

  • 降低抓取频率,时间设置长一些,访问时间采用随机数
  • 频繁切换UserAgent(模拟浏览器访问
  • 多页面数据,随机访问然后抓取数据
  • 更换用户IP,这是最直接有效的方法

在requests模块中如何设置代理

 

爬虫绕过登录

有时候做 Python 爬虫时经常会卡在登录,登录验证码是最头疼的事情,特别是现在的文字验证码和图形验证码。

第一种方法是登录后查看网站的 cookie,请求 url 的时候把 cookie 带上

cookie 方法我们要分析别人网站的 cookie 值,找出相应的值然后添加进去,对于我们不熟的网站,他们可能也会做加密或者动态处理,所以有些网站也不是那么好操作。如果是自己公司的网站需要测试,我们可以询问对应的开发那个 cookie 值是区分独立用的值,拿出来放在请求里面就行。

第二种方法是启动浏览器带上浏览器的全部信息,包括添加的书签和访问网页的 cookie 信息

添加 cookie 绕过登录

我们用 selenium 启动浏览器时,需要下载后对应的驱动文件并放在 Python 安装的根目录下,比如我会用到谷歌 Chrome 浏览器。

谷歌浏览器驱动下载地址

 

启动 Chrome 浏览器绕过登录

我们每次打开浏览器做相应操作时,对应的缓存和 cookie 会保存到浏览器默认的路径下,我们先查看个人资料路径,以 chrome 为例,我们在地址栏输入 chrome://version/

图中的个人资料路径就是我们需要的,我们去掉后面的 Default,然后在路径前加上「–user-data-dir=」就拼接出我们要的路径了。

 
 

Cookies处理

cookies是某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)

python提供了cookielib模块用于处理cookies,cookielib模块的主要作用是提供可存储cookie的对象。

在python2.0版本导入cookielib直接import cookielib
python3中为http.cookiejar

 

在爬虫中如果遇到了cookie的反爬如何处理?

  • 手动处理

在抓包工具中捕获cookie,将其封装在headers中

应用场景:cookie没有有效时长且不是动态变化

  • 自动处理

使用session机制

使用场景:动态变化的cookie

session对象:该对象和requests模块用法几乎一致.如果在请求的过程中产生了cookie,如果该请求使用session发起的,则cookie会被自动存储到session中。

需要注意的一点:并不是所有网站都适合保存cookies进行登录

怎么检查哪些网站可以使用保存cookies进行登录呢

我们可以在浏览器中进行登录操作,登录成功后,关闭浏览器,然后重新打开浏览器以后访问此网站,看看是否处于登录状态,如果是登录状态,那么这个网站很大程度上是可以使用cookies进行访问操作的。

应对反爬的小招

爬取人家网站的时候控制一下频率,有事没事睡一会,睡久了没效率,睡短了,被反爬搞掉了那也不行……

随机数更具有欺骗性,random可以用得上了

 

可以试着在爬虫代码加入这句代码,安心喝茶无后顾之忧

 

模拟浏览器访问页面

User-Agent中文名为用户代理,简称 UA

它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

简单来说就是我们经常说到的模拟浏览器去访问页面,避免被被网站反爬到。

fake-useragent:一个非常好用的伪装请求头的库,你绝对值得拥有

安装fake-useragent库

 

获取各浏览器的fake-useragent

 

看看下面的示例:够用不

 

所以可以试着在爬虫代码加入一下代码,让 UA更具有欺骗性

 

在一些网站服务中,除了对 user-agent 的身份信息进行检测、也对客户端的 ip 地址做了限制,如果是同一个客户端访问此网站服务器的次数过多就会将其识别为爬虫,因而,限制其客户端 ip 的访问。

这样的限制给我们的爬虫带来了麻烦,所以使用代理 ip 在爬虫中是非常有必要的。

由Urllib提供urllib.request.ProxyHandler()方法可动态设置代理IP池,代理IP主要以字典格式写入方法

 

还有headers这也是最常见的,最基本的反爬虫手段,主要是初步判断你是否是真实的浏览器在操作。

遇到这类反爬机制,可以直接在自己写的爬虫中添加Headers,将浏览器的User-Agent复制到爬虫的Headers中。

验证码处理

验证码我们在很多网站会遇到,如果请求量大了之后就会遇到验证码的情况。

列举三种最常见的验证码

解决思路:这种是最简单的一种,只要识别出里面的内容,然后填入到输入框中即可,这种识别技术叫OCR,推荐使用Python的第三方库tesserocr,对于没有什么背影影响的验证码如图2,直接通过这个库来识别就可以。

简单的OCR识别验证码

 
 

解决思路:对于这种验证码就比较复杂一点,但也是有相应的办法。我们直接想到的就是模拟人去拖动验证码的行为,点击按钮,然后看到了缺口 的位置,最后把拼图拖到缺口位置处完成验证。

③ 点击式的图文验证和图标选择

这两种原理相似,只不过是一个是给出文字,点击图片中的文字,一个是给出图片,点出内容相同的图片。

gzip 压缩

有没有遇到过某些网页,不论怎么转码都是一团乱码哈哈,那说明你还不知道许多web服务具有发送压缩数据的能力,这可以将网络线路上传输的大量数据消减 60% 以上。

这尤其适用于 XML web 服务,因为 XML 数据 的压缩率可以很高。

但是一般服务器不会为你发送压缩数据,除非你告诉服务器你可以处理压缩数据。

于是需要这样修改代码

 

关键:创建Request对象,添加一个 Accept-encoding 头信息告诉服务器你能接受 gzip 压缩数据

然后就是解压缩数据

 

爬虫中文乱码问题

写爬虫时肯定是要去考虑乱码的问题,可以参考一下以下思路

1)解析服务端返回的header中content-type. 得到编码,改编码是什么就按照什么去解析返回的字节流。

2)如果服务端header中没有content-type 信息,就按照 utf-8 解析返回的内容 。

再去解析meta标签得到编码,并作为最终的解析服务端返回字节流的编码。(因为按照gbk 或者 utf-8 还是其他的编码 解析charset=utf-8 的结果都是一样的,因为它们都兼容ascii编码,也就是前2个字节的码表都一样)

3)如果标签meta中也没有编码的话,那么可以尝试着去得到 en ,zh-CN ,zh. 然后用相应的编码解析返回的内容。

4)如果上面条件1,2,3都不满足的话,可以通过智能探测,如cpdetector,有些特殊网页,它确实是不准确的,如网页的meta中charset和实际的浏览器识别的正常显示的charset不相同的情况,它的识别也是错误的。所以这种办法会有误判的的情况。

不过经过前面的3步也基本能得到编码类型了。

5)还有一种情况就是国内的网页写的不规范,比如实际类型是utf-8,但是写成charset=gbk….这种情况也要考虑。

对于有些网页编码为utf-8的网址,输出时发现中文为乱码,此时我们需要进行两次重编码。

 

一些琐碎的个人经验

代码规范;这本身就是一个非常好的习惯,如果开始不注意,以后会很痛苦。

多动手;很多人学Python就一味的看书,这不是学数理化,看看例题可能就会了,学习Python主要还是靠实践。

勤练习;学完新的知识点,一定要记得如何去应用,不然学完就会忘。

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助

最新文章
职高云电脑教室idv云桌面管理平台软件
升级时只需升级服务器即可。云终端本身不需要升级即可获得升级后的高性能。对比以前每台机器都需要不断升级,这种模式可以有效保护现有投资。而且云终端耗电量远远小于PC机,按100台规模计算,每年节约的电费就将是一笔不小的数目。5、绿色
超逼真美女写真生成:AI工具评测与实用教程
DeepAI:DeepAI是一个强大的在线AI画图工具,用户只需输入几个描述性关键词,系统便可以自动生成相关的美女图像。它的特点在于易用性和生成速度快,缺点是生成的图像质量在一定程度上可能偏低,这对于追求精致效果的用户来说是个制约。DALL
鹰潭高压压密注浆灌浆2024年排行榜推荐
鹰潭高压压密注浆灌浆2024年排行榜推荐标题:2024年鹰潭高压压密注浆灌浆排行榜推荐随着我国基础设施建设的不断推进,高压压密注浆灌浆技术在建筑、桥梁、隧道等领域发挥着越来越重要的作用。鹰潭地区作为我国建筑行业的重要基地,拥有众多
新奥天天精准资料大全与热门话题解析落实——手游版探讨
随着信息技术的飞速发展和数字化时代的来临,数据资料的搜集、整理与分析已成为各行各业不可或缺的一环,在新奥天天精准资料大全的背景下,本文将围绕这一关键词,结合热门话题的解析落实,特别是手游版领域的发展,展开深入探讨,文章将概
如何做SEO兼职?这些方法助你轻松赚外快
现在做互联网营销的人越来越多,竞争越来越大,除去该考虑的成本之外,SEO优化就成了很多人首选的方式,很多人在接触学习SEO之前,常常会有这样的疑问,SEO可以做兼职吗?如何做好SEO的兼职?没有资金可以吗......目前大部分都在企业担任网络
朋友圈被领导点赞,法院:这是加班证据!公司赔了1.8万元!
微信截图可以作为证据吗?有法律效力吗?一员工休息时间推广公司产品,发朋友圈后领导为其点赞。后该员工被公司开除,主张领导朋友圈点赞应视为加班,公司应支付加班费。双方为此对簿公堂,法院会怎么判?事件回顾小杨于2016年3月,与北京
在线seo优化哪里买(seo在线优化排名)
大家好,今天小编关注到一个比较有意思的话题,就是关于在线seo优化哪里买的问题,于是小编就整理了6个相关介绍在线seo优化哪里买的解答,让我们一起看看吧。最好的SEO排名优化工具?seo优化推广多少钱?SEO优化推广是怎么收费的?上海SEO
中劢AI大模型引领智能营销新风潮,估值远超30亿
随着人工智能技术的不断发展,智能营销已经成为了越来越多企业的核心竞争力,在这个领域中,中劢AI大模型凭借其卓越的技术实力和创新能力,正在引领智能营销新风潮,成为行业的佼佼者,本文将从多个方面探讨中劢AI大模型的优势及其在智能营
稀缺房源 金茂府 10楼 位置超好 167平方 三恒精装 四室 报价345万元
每年1月1日至6月30日,经营主体应当在国家企业信用信息公示系统向市场监管部门报送上一年度年度报告,并向社会公示。随着年报季来临年报诈骗分子也悄悄开始活跃起来市场监管总局提醒:年报不收费大家要增强防范意识谨防“年报诈骗”↓↓ 1
相关文章
推荐文章
发表评论
0评