Python爬虫怎么使用http代理IP


本篇内容介绍了“Python爬虫怎么使用http代理IP”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  获取代理IP,代码如下:  #encoding=utf8  import urllib2  import BeautifulSoup  User_Agent = ‘Mozilla/5.0 (Windows NT 6.3; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0’  header = {}  header[‘User-Agent’] = User_Agent  url = ‘http://www.xicidaili.com/nn/1’  req = urllib2.Request(url,headers=header)  res = urllib2.urlopen(req).read()  soup = BeautifulSoup.BeautifulSoup(res)  ips = soup.findAll(‘tr’)  f = open(“../src/proxy”,”w”)  for x in range(1,len(ips)):  ip = ips[x]  tds = ip.findAll(“td”)  ip_temp = tds[2].contents[0]+”t”+tds[3].contents[0]+”n”  # print tds[2].contents[0]+”t”+tds[3].contents[0]  f.wri 香港云主机te(ip_temp)  代码说明:  a).这里我们使用的urllib2模块,因为,这个请求有点特殊,服务器会验证请求中的header(如有疑问,可参考http的相关资料)  b).urllib2与urllib的区别在于,urllib2发送请求的时候可携带参数(我现在只用到这点区别)  c).open()用于打开文件,第一个参数是文件的路径可以填绝对路径,例如E:proxy(””在编程中是特殊字符,要用””代表实际的””)。也可以是相对路径,比    如”../src/proxy”,就是文件相对于代码的位置。第二个参数”w”,代表打开文件的权限,w代表写权限,r代表读权限。这个在很多系统中都通用。比如,linux等  d).for循环,如果之前学过java或者其他高级语言,可能不太习惯,因为他们用的是for(;;)这样的。python中的for循环,in 表示X的取值,按顺序取到in后面的参数  特别注意:别忘了for语句后面的冒号(”:”)  c).range函数,代表生成一系列数,如果range(0,6,1),意思就是从0开始,到6结束(不包括6),每次增加1(也就是步长为1),生成一个数组,结果就是[0, 1, 2, 3, 4, 5]  e).f.write()就是往文件里面写数据,如果打开文件的时候,没有”w”权限,则无法写入。  并不是所有的代理都能用,原因有很多,可能是我们所处的网络连不到这个代理,也有可能是这个代理,连不到我们的目标网址,所以,我们要验证一下。以http://ip.chinaz.com/getip.aspx作为目标网址为例(这个是测试ip地址的网址)代码如下:  复制代码  #encoding=utf8  import urllib  import socket  socket.setdefaulttimeout(3)  f = open(“../src/proxy”)  lines = f.readlines()  proxys = []  for i in range(0,len(lines)):  ip = lines[i].strip(“n”).split(“t”)  proxy_host = “http://”+ip[0]+”:”+ip[1]  proxy_temp = {“http”:proxy_host}  proxys.append(proxy_temp)  url = “http://ip.chinaz.com/getip.aspx”  for proxy in proxys:  try:  res = urllib.urlopen(url,proxies=proxy).read()  print res  except Exception,e:  print proxy  print e  continue  复制代码  代码说明:  a).ip = lines[i].strip(“n”).split(“t”) 这个是去掉每行末尾的换行符(也就是”n”),然后以制表符(也就是”t”)分割字符串为字符串数组  b).proxy_temp = {“http”:proxy_host}其中http代表代理的类型,除了http之外还有https,socket等这里就以http为例  c).urllib.urlopen(url,proxies=proxy) 其中proxies就是代理。以代理模式访问目标网址  d).socket.setdefaulttimeout(3)设置全局超时时间为3s,也就是说,如果一个请求3s内还没有响应,就结束访问,并返回timeout(超时)“Python爬虫怎么使用http代理IP”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注开发云网站,小编将为大家输出更多高质量的实用文章!

相关推荐: hadoop hdfs和MapReduce怎么创建

本篇内容主要讲解“hadoop hdfs和MapReduce怎么创建”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“hadoop hdfs和MapReduce怎么创建”吧!大致步骤如下:新建一个文件test.txt,…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 10/30 10:50
下一篇 10/30 11:05

相关推荐