数学建模社区-数学中国

标题: Python爬虫常用小技巧之设置代理IP [打印本页]

作者: 杨利霞    时间: 2021-1-8 17:22
标题: Python爬虫常用小技巧之设置代理IP

  S; D) F  O! _5 g4 a
Python爬虫常用小技巧之设置代理IP

% u; i) E( B2 `: F" i8 y* O; d
4 F# ?9 Y/ {* X1 \9 g设置代理IP的原因
) v6 a6 @3 U- u9 v! t& `/ A我们在使用Python爬虫爬取一个网站时,通常会频繁访问该网站。假如一个网站它会检测某一段时间某个IP的访问次数,如果访问次数过多,它会禁止你的访问。所以你可以设置一些代理服务器来帮助你做工作,每隔一段时间换一个代理,这样便不会出现因为频繁访问而导致禁止访问的现象。
; }  E1 ?- X# Z! s, M. }我们在学习Python爬虫的时候,也经常会遇见所要爬取的网站采取了反爬取技术导致爬取失败。高强度、高效率地爬取网页信息常常会给网站服务器带来巨大压力,所以同一个IP反复爬取同一个网页,就很可能被封,所以下面这篇文章讲述一个爬虫技巧,设置代理IP# ^6 Z- L5 s9 |
代理的获取有很多方式,网上有很多免费的可以去爬取一些试试,但是免费的代理使用起来也是 很吃力的。还有就是现在网上有很多的代理供应商,可以在网上寻找下,然后找家靠谱的使用。毕竟网络太大了,代理供应商肯定也是参差不齐的,所以找到合适的代理还是需要花点时间的。在这里我就是使用了我们长期使用的一家质量好的代理,亿牛云代理,而且是使用的他们的爬虫代理(动态转发)和一般的api模式不一样。这种更简单更方便,对于懒人来说绝对是最佳选择。
! d9 z- c, Y, T- z1 q- f& c具体代码的使用1 D& I! k, A+ h$ `1 O
#! -*- encoding:utf-8 -*-
  f7 k) S8 k* |" u7 X& R; t
( @: Y( V, w  B) |" d1 q5 y        import requests, R( z; o7 b) ]
        import random
4 L6 P6 `8 w4 s# Q. E$ J9 e4 v: f' u% |9 K3 s
        # 要访问的目标页面: ]; b' w& d) e4 J  O. l
        targetUrl = "http://httpbin.org/ip"8 W% M0 p! i2 r4 T. c& c  r

2 T8 I+ e( D. V2 w% ?3 Q2 w6 u) `        # 要访问的目标HTTPS页面# w" p7 z3 x' c: `2 |
        # targetUrl = "https://httpbin.org/ip"
5 k( m" X& M; k, x; g( H! [( C  J. Q5 h2 h2 G2 p
        # 代理服务器
# |* m  @8 I6 W6 Z- ^6 `        proxyHost = "t.16yun.cn"
; n) w1 F4 i2 a3 ]; c0 E' w        proxyPort = "31111"
% b+ C1 O# L* ?; g% y* r8 B* S, g7 @5 }8 x% ]" K* ]) J' @
        # 代理隧道验证信息1 t: }- N! g9 I6 H
        proxyUser = "username": i3 K, [5 d! r4 w
        proxyPass = "password"
/ j9 t$ ]. T( @( c
8 C7 |" j- y/ E' X; Y( R, H! I        proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {3 P0 W$ H' |" z, i1 V
            "host" : proxyHost,+ M3 u& }7 W* Y$ ?- q5 w7 n
            "port" : proxyPort,
: z2 ?4 S5 O! [* P% w3 I4 b            "user" : proxyUser,
. l, R# ?5 g! b8 x: `2 e" Z0 p            "pass" : proxyPass,8 {( ^  N( d# M6 Z+ i$ m3 K
        }
% x" P8 \8 {# u  Z  r. h; j
; S$ q9 I( G9 Y- q6 U( |        # 设置 http和https访问都是用HTTP代理
. R  X" ~' d0 x        proxies = {
9 a6 a# h2 u6 O: O; r. d            "http"  : proxyMeta,) O4 H6 N; Y8 I% r% Q4 l5 e
            "https" : proxyMeta,
. z2 H5 n8 W) K& F3 Q: Z        }
: U7 x3 w9 g1 C7 J, A6 R; N* x" Z8 P$ f# a- d! q2 x# O

' w; R; M6 G+ J5 K. G        #  设置IP切换头- C/ m& ?; h5 B& K. i  k
        tunnel = random.randint(1,10000)% y8 _, s& a$ t% @8 Z$ v* e
        headers = {"Proxy-Tunnel": str(tunnel)}* u) U, ?8 _- V9 L) V  h
        resp = requests.get(targetUrl, proxies=proxies, headers=headers)$ j9 f) Y7 B$ V0 W+ }. ]6 h
9 ]7 i* @1 j' y% t4 {0 S9 s
        print resp.status_code
8 |8 z+ G5 G4 x1 \! T; Z; `        print resp.text8 }% O! `8 z, R4 P% y( O
总结
6 E8 W8 U8 a: n4 g以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流
. P3 r/ H$ j2 U7 A" m8 d$ [
1 W5 p0 f3 a( q' M! s1 O& f




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5