说说我在爬虫中常用的8个技巧,最后一个屡试不爽

今天跟大家分享几个

我在爬虫中用到的技巧

技巧Ⅰ

爬取人家网站的时候频率不要太高,有事没事睡一会,睡久了没效率,睡短了,被反爬了,那就尴尬了…

随机数更具有欺骗性,所以睡多久,random决定!

import time
import random

for i in range(1,11):
    time = random.random()*5
    print(f'第{i}次睡了:', time, 's')
'''
第1次睡了: 0.6327309035891232 s
第2次睡了: 0.037961811128097045 s
第3次睡了: 0.7443093721610153 s
第4次睡了: 0.564336149517787 s
第5次睡了: 0.39922345839757245 s
第6次睡了: 0.13724989845026703 s
第7次睡了: 0.7877693301824763 s
第8次睡了: 0.5641490602064826 s
第9次睡了: 0.05517343036931721 s
第10次睡了: 0.3992618299505627 s
'''

所以可以试着在爬虫代码加入这句代码

让子弹飞一会

time.sleep(random.random()*5)

技巧Ⅱ

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

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

简单来说就是模拟浏览器去访问页面,

这样才不会被网站反爬到。

但是哪里去搞user-agnet呢?

随机数更具有欺骗性

所以哪里搞?李相赫决定!

from fake_useragent import UserAgent

for i in range(1,11):
    ua = UserAgent().random
    print(f'第{i}次的ua是', ua)

'''
第1次的ua是 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/537.36
第2次的ua是 Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20130401 Firefox/21.0
第3次的ua是 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; es-es) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27
第4次的ua是 Mozilla/5.0 (X11; CrOS i686 4319.74.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36
第5次的ua是 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; fr-ch) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4
第6次的ua是 Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36
第7次的ua是 Mozilla/5.0 (X11; NetBSD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36
第8次的ua是 Mozilla/5.0 (X11; Linux i586; rv:31.0) Gecko/20100101 Firefox/31.0
第9次的ua是 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Zune 3.0)
第10次的ua是 Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.16 Safari/537.36
'''

够用不?老板

所以可以试着在爬虫代码加入这句代码

让ua更具有欺骗性

headers= {'User-Agent':str(UserAgent().random)}

技巧Ⅲ

让你事半功倍的浏览器插件

插件使用之前:

插件使用之后:

技巧Ⅳ

巧用pprint

这跟上面那个效果差不多,只不过刚才那个是在浏览器中查看的

而这个我们是在pycharm中查看的

来看效果吧

print()打印,不知道你感觉如何,我一脸懵逼

import requests
url = 'https://www.douyu.com/gapi/rknc/directory/yzRec/1'
resp = requests.get(url).json()
print(resp)

pprint()打印,这种结构看起来如何呢?

from pprint import pprint
import requests
url = 'https://www.douyu.com/gapi/rknc/directory/yzRec/1'
resp = requests.get(url).json()
pprint(resp)

技巧Ⅴ

对于页面解析最强大的当然是正则表达式,这个对于不同网站不同的使用者都不一样,就不用过多的说明,附两个比较好的网址:

正则表达式入门:

http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html   

正则表达式在线测试:

http://tool.oschina.net/regex/   

其次就是解析库了,常用的有两个lxml和BeautifulSoup,对于这两个的使用介绍两个比较好的网站:

lxml:http://my.oschina.net/jhao104/blog/639448   
BeautifulSoup:http://cuiqingcai.com/1319.html   

对于这两个库,我的评价是,都是HTML/XML的处理库,

Beautifulsoup纯python实现,效率低,但是功能实用,

比如能用通过结果搜索获得某个HTML节点的源码;

lxml C语言编码,高效,支持Xpath。

技巧Ⅵ

在一些网站服务中,除了对 user-agent 的身份信息进行检测、

也对客户端的 ip 地址做了限制,

如果是同一个客户端访问此网站服务器的次数过多就会将其识别为爬虫,

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

这里我给大家提供一下两个网站供参考

66代理:http://www.66ip.cn/6.html      
快代理:https://www.kuaidaili.com/free/   

大家可以将这些ip使用爬虫下载到本地,然后检查每一个ip的状态码判断其是否可用。

这样每次使用爬虫下载文件的时候。

只需使用random随机使用一个就可以。

技巧Ⅶ

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

最让人诟病的12306,其实也是一定程度上的防止非正当请求的产生。

对于验证码,可以通过OCR来识别图片,Github上面有很多大神分享的代码可以用,可以去看看。

简单的OCR识别验证码:

 from PIL import Image
import tesserocr
#tesserocr识别图片的2种方法
img = Image.open("code.jpg")
verify_code1 = tesserocr.image_to_text(img)
#print(verify_code1)
verify_code2 = tesserocr.file_to_text("code.jpg") 

  

技巧Ⅷ

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

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

以edge浏览器为例,浏览器中打开页面;

第一步:点击上图中“网络”标签,然后刷新或载入页面

第二步:在右侧“标头”下方的“请求标头”中的所有信息都是headers内容,添加到请求中即可。

最后

我们准备了一门非常系统的爬虫课程,除了为你提供一条清晰、无痛的学习路径,我们甄选了最实用的学习资源以及庞大的主流爬虫案例库。短时间的学习,你就能够很好地掌握爬虫这个技能,获取你想得到的数据。

01 专为0基础设置,小白也能轻松学会

我们把Python的所有知识点,都穿插在了漫画里面。

在Python小课中,你可以通过漫画的方式学到知识点,难懂的专业知识瞬间变得有趣易懂。
在这里插入图片描述

在这里插入图片描述

你就像漫画的主人公一样,穿越在剧情中,通关过坎,不知不觉完成知识的学习。

02 无需自己下载安装包,提供详细安装教程

在这里插入图片描述

03 规划详细学习路线,提供学习视频

在这里插入图片描述

在这里插入图片描述

04 提供实战资料,更好巩固知识

在这里插入图片描述

05 提供面试资料以及副业资料,便于更好就业

在这里插入图片描述
在这里插入图片描述

这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要也可以扫描下方csdn官方二维码或者点击主页和文章下方的微信卡片获取领取方式,【保证100%免费】
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值