详解利用python爬取软考试题之ip自动代理方法

最近为了考试打算抓取网上的软考试题,在抓取中遇到一些问题,下面这篇文章主要介绍的是利用#wiki/1514.html” target=”_blank”>python爬取软考试题之ip自动代理的相关资料,文中介绍的非常详细,需要的朋友们下面来一起看看吧。

前言

最近有个软件专业等级考试,以下简称软考,为了更好的复习备考,我打算抓取www.rkpass.cn网上的软考试题。

首先讲述一下我爬取软考试题的故(keng)事(shi)。现在我已经能自动抓取某一个模块的所有题目了,如下图:

2、第二种方法是通过设置代理ip等手段,突破反爬虫机制继续高频率抓取。但是这样需要多个稳定的代理ip。

话不多书,直接上代码:

# ip地址取自国内髙匿代理ip网站:http://www.xicidaili.com/nn/
# 仅仅爬取首页ip地址就足够一般使用
from bs4 import beautifulsoup
import requests
import random
#获取当前页面上的ip
def get_ip_list(url, headers):
web_data = requests.get(url, headers=headers)
soup = beautifulsoup(web_data.text)
ips = soup.find_all(‘tr’)
ip_list = []
for i in range(1, len(ips)):
ip_info = ips[i]
tds = ip_info.find_all(‘td’)
ip_list.append(tds[1].text + ‘:’ + tds[2].text)
return ip_list
#从抓取到的ip中随机获取一个ip
def get_random_ip(ip_list):
proxy_list = []
for ip in ip_list:
proxy_list.append(‘http://’ + ip)
proxy_ip = random.choice(proxy_list)
proxies = {‘http’: proxy_ip}
return proxies
#国内高匿代理ip网主地址
url = ‘http://www.xicidaili.com/nn/’
#请求头
headers = {‘user-agent’: ‘mozilla/5.0 (windows nt 6.1; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/53.0.2785.143 safari/537.36’}
#计数器,根据计数器来循环抓取所有页面的ip
num = 0
#创建一个数组,将捕捉到的ip存放到数组
ip_array = []
while num < 1537: num += 1 ip_list = get_ip_list(url+str(num), headers=headers) ip_array.append(ip_list) for ip in ip_array: print(ip) #创建随机数,随机取到一个ip # proxies = get_random_ip(ip_list) # print(proxies)

运行结果截图:

这样,在爬虫请求的时候,把请求ip设置为自动ip,就能有效的躲过反爬虫机制中简单的封锁固定ip这个手段。

以上就是详解利用python爬取软考试题之ip自动代理方法的详细内容,更多请关注 第一php社区 其它相关文章!

Posted in 未分类

发表评论