Python爬虫iP被封的怎么办?
对于经常做数据爬虫的程序员来说,除了要写出简洁方便的代码。还需要解决的是网站反爬的问题。有时候我们在爬取数据的时候突然报出错或者目标网站错误代码。
比如说:403 Forbidden错误,“您的IP访问频率太高”错误,或者跳出一个验证码让我们输入,之后解封,但过一会又出现类似情况。
这些问题的出现都是爬取的网站触发了反爬机制。意思就是说网站服务器检测到同一个ip下超多的请求数达到网站设置的阈值自动开启验证,说白了就是封了这个IP,可能过几个小时就解封,但是爬虫不可能等。
为了解决此类问题,爬虫ip就派上了用场,如:爬虫ip软件、付费爬虫ip、ADSL拨号爬虫ip,都可以有效的解决爬虫脱离封IP的苦海。

测试爬虫ip请求及响应的网站:http://www.baidu.com。
baidu这个网站能测试 HTTP 请求和响应的各种信息,比如 cookie、ip、headers 和登录验证等。
且支持 GET、POST 等多种方法,对 web 开发和测试很有帮助。
它用 Python + Flask 编写,是一个开源项目。
返回信息中origin的字段就是客户端的IP地址,即可判断是否成功伪装IP:
爬虫ip的设置:
1、urllib的爬虫ip设置
from urllib.error import URLError
from urllib.request import ProxyHandler, build_opener proxy = 'ip地址:端口'
#需要认证的爬虫ip #proxy = 'username:password@ip地址:端口' #使用ProxyHandler设置爬虫ip
proxy_handler = ProxyHandler({
'http': 'http://' + proxy,
'https': 'https://' + proxy
})
#传入参数创建Opener对象
opener = build_opener(proxy_handler)
try:
response = opener.open('http://www.baidu.com')
print(response.read().decode('utf-8'))
except URLError as e:
print(e.reason)
2、requests的爬虫ip设置
import requests proxy = 'ip地址:端口'
#需要认证的爬虫ip
#proxy = 'username:password@ip地址:端口' proxies = {
'http': 'http://' + proxy,
'https': 'https://' + proxy,
}
try:
response = requests.get('http://www.baidu.com', proxies=proxies)
print(response.text)
except requests.exceptions.ConnectionError as e:
print('Error', e.args)
3、Selenium的爬虫ip使用
使用的是PhantomJS
from selenium import webdriver service_args = [
'--proxy=ip地址:端口',
'--proxy-type=http',
#'--proxy-auth=username:password' #带认证爬虫ip
] browser = webdriver.PhantomJS(service_args=service_args)
browser.get('http://www.baidu.com')
print(browser.page_source) 使用的是Chrome
from selenium import webdriver proxy = 'ip地址:端口'
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=http://' + proxy)
chrome = webdriver.Chrome(chrome_options=chrome_options)
chrome.get('http://www.baidu.com')
4、在Scrapy使用爬虫ip
#在Scrapy的Downloader Middleware中间件里
...
def process_request(self, request, spider):
request.meta['proxy'] = 'http://ip地址:端口'
...
免费爬虫ip的使用
import requests,random #定义爬虫ip池
proxy_list = [
'182.39.6.245:38634',
'115.210.181.31:34301',
'123.161.152.38:23201',
'222.85.5.187:26675',
'123.161.152.31:23127',
] # 免费ip链接:http://jshk.com.cn/mb/reg.asp?kefu=xjy
# 随机选择一个爬虫ip
proxy = random.choice(proxy_list) proxies = {
'http': 'http://' + proxy,
'https': 'https://' + proxy,
}
try:
response = requests.get('http://www.baidu.com', proxies=proxies)
print(response.text)
except requests.exceptions.ConnectionError as e:
print('Error', e.args)
在requests中使用爬虫ip
import requests # 从爬虫ip服务中获取一个爬虫ip
proxy = requests.get("http://jshk.com.cn").text
proxies = {
'http': 'http://' + proxy,
'https': 'https://' + proxy,
}
try:
response = requests.get('http://www.baidu.com', proxies=proxies)
print(response.text)
except requests.exceptions.ConnectionError as e:
print('Error', e.args)
Python爬虫iP被封的怎么办?的更多相关文章
- Python爬虫老是被封的解决方法【面试必问】
在爬取的过程中难免发生 ip 被封和 403 错误等等,这都是网站检测出你是爬虫而进行反爬措施,在这里为大家总结一下 Python 爬虫动态 ip 代理防止被封的方法. PS:另外很多人在学习Pyth ...
- 避免网络爬虫IP被封的策略
背景 这两天一直在搞Java网络爬虫作为Java课程设计,目标是爬取豆瓣电影top250的影评,之后可能还需要进行情感分析,当然这就不是爬虫的内容了.我的爬虫程序在一开始只是一个页面一个页面的爬取信息 ...
- 爬虫-IP被封解决办法
方法1. 之前由于公司项目需要,采集过google地图数据,还有一些大型网站数据. 经验如下:1.IP必须需要,比如ADSL.如果有条件,其实可以跟机房多申请外网IP.2.在有外网IP的机器上,部署代 ...
- Python爬虫 | IP池的使用
一.简介 - 爬虫中为什么需要使用代理 一些网站会有相应的反爬虫措施,例如很多网站会检测某一段时间某个IP的访问次数,如果访问频率太快以至于看起来不像正常访客,它可能就会禁止这个IP的访问.所以我们需 ...
- 设置python爬虫IP代理(urllib/requests模块)
urllib模块设置代理 如果我们频繁用一个IP去爬取同一个网站的内容,很可能会被网站封杀IP.其中一种比较常见的方式就是设置代理IP from urllib import request proxy ...
- python爬虫18 | 就算你被封了也能继续爬,使用IP代理池伪装你的IP地址,让IP飘一会
我们上次说了伪装头部 ↓ python爬虫17 | 听说你又被封 ip 了,你要学会伪装好自己,这次说说伪装你的头部 让自己的 python 爬虫假装是浏览器 小帅b主要是想让你知道 在爬取网站的时候 ...
- Python爬虫教程-11-proxy代理IP,隐藏地址(猫眼电影)
Python爬虫教程-11-proxy代理IP,隐藏地址(猫眼电影) ProxyHandler处理(代理服务器),使用代理IP,是爬虫的常用手段,通常使用UserAgent 伪装浏览器爬取仍然可能被网 ...
- Python爬虫突破封禁的6种常见方法
转 Python爬虫突破封禁的6种常见方法 2016年08月17日 22:36:59 阅读数:37936 在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长.今天大众好像更倾向于用 ...
- Python爬虫常用小技巧之设置代理IP
设置代理IP的原因 我们在使用Python爬虫爬取一个网站时,通常会频繁访问该网站.假如一个网站它会检测某一段时间某个IP的访问次数,如果访问次数过多,它会禁止你的访问.所以你可以设置一些代理服务器来 ...
- 爬虫的新手使用教程(python代理IP)
前言 Python爬虫要经历爬虫.爬虫被限制.爬虫反限制的过程.当然后续还要网页爬虫限制优化,爬虫再反限制的一系列道高一尺魔高一丈的过程.爬虫的初级阶段,添加headers和ip代理可以解决很多问题. ...
随机推荐
- UI基础 - UIAppearance协议
前言 1 - 在一些 app 中会涉及到更改外观设置的功能,最普遍的就是夜间模式和白天模式的切换,而对于外观的更改必定是一个全局的东西.这在 iOS5 以前想要实现这样的效果是比较困难的,但是 iOS ...
- noi 45 金币
noi 45 金币 1.描述 国王将金币作为工资,发放给忠诚的骑士.第一天,骑士收到一枚金币:之后两天(第二天和第三天)里,每天收到两枚金币:之后三天(第四.五.六天)里,每天收到三枚金币:之后四天( ...
- springsecurity maven 打包后,404错误。maven 打包后,加载内置的xml文件
404错误,解决的办法,主要是pom文件 <build> <resources> <resource> <directory>src/main/reso ...
- selenium爬取PDF预览文件
python selenium 爬取某网站的pdf预览文件,下载图片转换pdf 参考链接:https://blog.csdn.net/weixin_44740756/article/details/1 ...
- 动态规划-3-RNA的二级结构
/*状态转移方程: OPT(i , j)= max(OPT(i , j − 1) , max( 1+OPT(i , t − 1)+OPT(t + 1, j − 1))), where the max ...
- Double NaN
import java.math.BigDecimal; import java.math.RoundingMode; public class Test { public static void m ...
- debian / deepin (Ubuntu)安装 mariadb
debian / deepin 安装 mariadb 安装步骤: LINUX安装mariadb本质和mysql一致,可以参考官网教程进行安装.https://mariadb.org/download/ ...
- HTML+CSS+JS制作一个黑灰色简约时钟
HTML+CSS+JS制作一个黑灰色简约时钟 1. 效果图: 2. 特点:这次借鉴了网络上的代码,利用JS动态创建元素,减少html语句的数量,也便于与vue.react等语言进行结合. 3. 代码实 ...
- 对象转Map
Map<String, Object> userMap = BeanUtil.beanToMap(userDTO);
- c中遍历lua的表
//遍历lua表,index为表在栈中的位置 void traverse_table(lua_State* L, int index) { lua_pushnil(L); stack_dump(L); ...