- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 566435 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 175153
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
8 M v. ?; T) o4 \Python爬虫常用小技巧之设置代理IP
, z- \, K* J" z0 R: m& P8 X7 O% h1 F6 H6 w4 B! i& j
设置代理IP的原因
7 T2 H1 [2 n5 R( b+ d0 l我们在使用Python爬虫爬取一个网站时,通常会频繁访问该网站。假如一个网站它会检测某一段时间某个IP的访问次数,如果访问次数过多,它会禁止你的访问。所以你可以设置一些代理服务器来帮助你做工作,每隔一段时间换一个代理,这样便不会出现因为频繁访问而导致禁止访问的现象。! N* w3 e) I) ?1 a4 H) J, L/ _
我们在学习Python爬虫的时候,也经常会遇见所要爬取的网站采取了反爬取技术导致爬取失败。高强度、高效率地爬取网页信息常常会给网站服务器带来巨大压力,所以同一个IP反复爬取同一个网页,就很可能被封,所以下面这篇文章讲述一个爬虫技巧,设置代理IP4 a4 O: Q% P# g. }
代理的获取有很多方式,网上有很多免费的可以去爬取一些试试,但是免费的代理使用起来也是 很吃力的。还有就是现在网上有很多的代理供应商,可以在网上寻找下,然后找家靠谱的使用。毕竟网络太大了,代理供应商肯定也是参差不齐的,所以找到合适的代理还是需要花点时间的。在这里我就是使用了我们长期使用的一家质量好的代理,亿牛云代理,而且是使用的他们的爬虫代理(动态转发)和一般的api模式不一样。这种更简单更方便,对于懒人来说绝对是最佳选择。) {% g; u9 ]7 s& p' v
具体代码的使用$ A& \; _% }: [9 l u3 _* D
#! -*- encoding:utf-8 -*-9 V' S; r3 c( I2 U, v6 Y* d
1 I3 `; Q( o3 K5 p8 \) t import requests8 l# M6 z) Z8 T+ ^0 A9 Q4 L% b) k
import random' Y0 _6 ]% f4 s; N) u N- |
/ R4 ], p0 Z3 U+ u8 }/ P" K: j, t
# 要访问的目标页面, }, R2 ]# T8 n' S+ q$ E
targetUrl = "http://httpbin.org/ip"
/ }9 [4 V0 _& D8 [( a% |# Y6 G [8 [- W; o$ T$ l
# 要访问的目标HTTPS页面
. A5 ~6 F' h. d6 n. ^% d& G # targetUrl = "https://httpbin.org/ip"$ P5 u: _4 w/ b7 U9 @- N
& [* b ^( g* n5 T
# 代理服务器
( L1 E1 [! Z: g7 x* k proxyHost = "t.16yun.cn"2 q( S. a+ h" [! n$ y
proxyPort = "31111"
) q9 c. o- j; k( N: W' a% v0 |0 [) v: t/ s4 f
# 代理隧道验证信息, z0 }, G4 s3 j5 k( u& ^7 h/ o
proxyUser = "username"- }- B5 Q1 V% J' [9 S$ s
proxyPass = "password"
6 Z3 T A* k; u5 _3 ~# ]. ^
( A. d B$ p5 n5 D& t proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
7 h" ~. v( j/ i5 @" |$ J+ p! H "host" : proxyHost," ^8 J, H8 p) _. e2 k7 k- m+ M
"port" : proxyPort,
7 r3 O% K* w* [1 q$ K0 J "user" : proxyUser,
0 f1 Y, ^$ N; s, ]) T$ v7 j' j( d5 p "pass" : proxyPass,
; L: R+ y' s& d6 [; A$ p9 O }
. [( q1 Y" R! }9 a, P, T$ b8 ~3 [) J/ |& t @3 ?# [
# 设置 http和https访问都是用HTTP代理
8 ]8 ^% r. I; J& B3 P( m# { proxies = {
R+ m& X- N! @& u/ n' U; [ "http" : proxyMeta," P6 `( R% `' m8 i- q/ [/ u
"https" : proxyMeta,
- B( J; @. z5 c% j }
/ b0 v9 w$ x6 \' m0 y" }6 U# O/ o+ B3 m% j2 j+ D
( a* }. l& B% m1 K6 b
# 设置IP切换头* D3 Z' G3 N. q
tunnel = random.randint(1,10000)
2 h, |0 q* l: f: b headers = {"Proxy-Tunnel": str(tunnel)}
* ]# ]3 I, I: V. r: ? resp = requests.get(targetUrl, proxies=proxies, headers=headers)6 L' z. m6 N( m
& ^) q& S. e% s% L6 |
print resp.status_code
$ U4 i2 X) \/ Z( J* c% [& J( z print resp.text
: ?) r) R( x3 e3 S5 ]$ o总结
( t7 D1 I0 h6 i) b2 G* W' u( k以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流, C7 L0 j) n' R. U9 y6 O4 r
/ E' ~% `: _2 k- i8 B) ]. d |
zan
|