反爬虫的几种有效的方法:
1:伪装成浏览器的头部
什么意思呢?它的意思是因为很多网站会识别User-Agent这个参数,如果不更换报头的话,很容易就会知道这个不是人为的查看网页,因为不改User-Agent这个参数就会显示出屎python进行访问页面,一般网站都会进行限制
2:随机生成UA,因为如果不进行更换报头浏览器的话,因为爬虫的速度,不到几页就会被网站终止,所以我们需要进行模拟更换浏览器头部
3:减慢爬取的速度
虽然模拟了不同浏览器爬取数据,但发现有的时间段可以爬取上百页的数据,有时候却只能爬取十来页,看来服务器还会根据你的访问的频率来识别你是人类用户还是网络爬虫。所以我每抓取一页都让它随机休息几秒,加入此句代码后,每个时间段都能爬取大量股票数据了。
4.使用代理IP
天有不测风云,程序在公司时顺利测试成功,回寝室后发现又只能抓取几页就被服务器阻止了。惊慌失措的我赶紧询问度娘,获知服务器可以识别你的IP,并记录此IP访问的次数,可以使用高匿的代理IP,并在抓取的过程中不断的更换,让服务器无法找出谁是真凶。此功还未修成,欲知后事如何,请听下回分解
5.其他突破反爬虫限制的方法
很多服务器在接受浏览器请求时会发送一个cookie文件给浏览器,然后通过cookie来跟踪你的访问过程,为了不让服务器识别出你是爬虫,建议最好带上cookie一起去爬取数据;如果遇上要模拟登陆的网站,为了不让自己的账号被拉黑,可以申请大量的账号,然后再爬入,此处涉及模拟登陆、验证码识别等知识,暂时不再深究...总之,对于网站主人来说,有些爬虫确实是令人讨厌的,所以会想出很多方法限制爬虫的进入,所以我们在强行进入之后也得注意些礼仪,别把人家的网站给拖垮了。
总的来说,不停的更换IP以及浏览器就比较好的,比较实用的方法
进入正题
-首先进行页面的抓取
当然,页面有很多页,首先进行一页的抓取数据,然后根据F12进行分析,使用正则表达式提取出需要的数据,分页的时候需要对网址进行分析,到底是哪些值在变导致页面的跳转
import urllib.request
url='http://quote.stockstar.com/stock/ranklist_a_3_1_1.html' #目标网址
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64)"} #伪装浏览器请求报头
request=urllib.request.Request(url=url,headers=headers) #请求服务器
response=urllib.request.urlopen(request) #服务器应答
content=response.read().decode('gbk') #以一定的编码方式查看源码
print(content) #打印页面源码
pattern=re.compile('<tbody[\s\S]*</tbody>'