python实现https代理,python request对象

  python实现https代理,python request对象

  在编写爬虫的过程中,为了避免IP地址被封禁,可以在抓取IP代理后,通过代理IP访问网页。互联网上有很多提供免费代理IP的网站。我们可以选择Xici抓取代理IP并存储在csv文件中,通过多个进程验证抓取IP的可用性。

  http://www.xicidaili.com/提供了许多免费的代理IP。

  通过请求和lxml抓取和解析网页。

  在爬行之前,我们首先设置请求头,将网页访问模拟为普通浏览器。

  headers={ accept: text/html,application/xhtml xml,application/XML;q=0.9,image/webp,image/apng,*/*;q=0.8 ,接受-编码: gzip,deflate ,接受-语言: zh-CN,zh;q=0.9 , cache-control: no-cache , connection: keep-alive , host: www.xicidaili.com , if-none-match : W/ 61 F3 e 567 B1 a 5028 acee 7804 fa 878 a5 ba , upgrade-unsecured-requests : 1 , user-agent : Mozilla/5.0(Windows NT 6.1;Wow64) apple WebKit/537.36 (khtml,像壁虎一样)chrome/64 . 0 . 3282 . 119 safari/537.36 }关于头的设置可以和POSTMAN的自动代码生成一样。

  要抓取的页面结构非常简单。所有的ip地址和端口通过lxml的css选择器拼接,然后逐行写入csv文件。

  代码如下:

  get proxy list(target _ URL=target _ URL,pages= 1 ): 已爬网代理IP地址:param target_url:已爬网代理IP地址:return: proxy file=open(file _ name, a ,newline= )writer=CSV . writer(proxy file)r=requests . get(target _ URL pages,headers=headers,time out=2.5)document _ tree=lxml . html . from string(r . text)rows=document _ tree . CSS select(# IP _ list tr )rows . pop(0)fortext _ content()proxy _ port=TDS[2]。text _ content()proxy _ addr=TDS[3]。text_content()。strip()编写器。writerow([代理IP,代理端口,代理地址]) Proxyfile。Close()自行设置已抓取的页面,抓取的地址写入csv文件。但更有可能的是,之前发布的一些代理IP无法使用,所以你只需抓取前5页左右即可。

  在验证代理IP的可行性时,增加一个验证方法,通过进程池验证每个代理IP。您可以通过请求会话连续访问网络。

  def verify proxy(verify _ URL,FILE _ path=FILE _ NAME):session=requests . session()proxy FILE=open(FILE _ NAME, r )CSV _ reader=CSV . reader(proxy FILE)p=Pool(10)for row in CSV _ reader:proxy={ http : http:// row[0]: row[1]} p . apply _ async(verify proxy,args=(verify _ URL,proxy,session))p . close()p . join()proxy FILE . close()顺便如果在请求过程中设置了超时,则需要使用try-except抛出异常,否则当超过超时设置的值时,相应的进程将被终止。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: