Python 代理爬取网站数据

举报
Lansonli 发表于 2021/09/28 00:31:18 2021/09/28
【摘要】 代理IP通过https://www.kuaidaili.com/free/ 获取,我使用的的是http 协议的代理。根据自己需求选择http或者https 协议的页面。 访问量会有增长,但效果不是非常理想,后面找时间在研究下、废话不多说,直接上代码。 # -*- coding:utf-8 -*- import reques...

代理IP通过https://www.kuaidaili.com/free/ 获取,我使用的的是http 协议的代理。根据自己需求选择http或者https 协议的页面。

访问量会有增长,但效果不是非常理想,后面找时间在研究下、废话不多说,直接上代码。


  
  1. # -*- coding:utf-8 -*-
  2. import requests
  3. import random
  4. import time
  5. import re
  6. user_agent_list=[
  7. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
  8. 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
  9. 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
  10. 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)',
  11. 'Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
  12. 'Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11',
  13. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11',
  14. 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)',
  15. 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0',
  16. 'Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
  17. ]
  18. count=0
  19. def Get_proxy_ip():
  20. headers = {
  21. 'Host': "www.kuaidaili.com",
  22. 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36',
  23. 'Accept': r'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3'
  24. }
  25. req=requests.get(r'https://www.kuaidaili.com/free/inha/16/',headers=headers)
  26. html=req.text
  27. proxy_list=[]
  28. IP_list=re.findall(r'\d+\.\d+\.\d+\.\d+',html)
  29. port_lits=re.findall(r'<td data-title="PORT">\d+</td>',html)
  30. for i in range(len(IP_list)):
  31. ip=IP_list[i]
  32. port=re.sub(r'<td data-title="PORT">|</td>','',port_lits[i])
  33. proxy='%s:%s' %(ip,port)
  34. proxy_list.append(proxy)
  35. return proxy_list
  36. def Proxy_read(proxy_list,user_agent_list,i):
  37. proxy_ip=proxy_list[i]
  38. print ('当前代理ip:%s'%proxy_ip)
  39. user_agent = random.choice(user_agent_list)
  40. print('当前代理user_agent:%s'%user_agent)
  41. sleep_time = random.randint(1,5)
  42. print('等待时间:%s s' %sleep_time)
  43. time.sleep(sleep_time)
  44. print('开始获取')
  45. headers = {
  46. 'User-Agent': user_agent
  47. }
  48. proxies={
  49. 'http': proxy_ip
  50. }
  51. url='https://www.baidu.com' #blog 地址
  52. try:
  53. req = requests.get(url, headers=headers, proxies=proxies, timeout=6,verify=False)
  54. html=req.text
  55. print (html)
  56. except Exception as e:
  57. print(e)
  58. print('******打开失败!******')
  59. else:
  60. global count
  61. count += 1
  62. print('OK!总计成功%s次!' % count)
  63. if __name__ == '__main__':
  64. proxy_list = Get_proxy_ip()
  65. for i in range(100):
  66. Proxy_read(proxy_list, user_agent_list, i)



 

文章来源: lansonli.blog.csdn.net,作者:Lansonli,版权归原作者所有,如需转载,请联系作者。

原文链接:lansonli.blog.csdn.net/article/details/104442900

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。