每月代理IP知识
Python爬虫中代理IP的使用
更新:2020/12/15 11:28:26 浏览:713次
使用Python测试前需要先获取一个可用的代理,某度搜索“代理”关键字,就可以看到许多代理IP服务商,几乎每家都有免费代理可以使用,推荐www.dieniao.com,以下是自动获取蝶鸟代理网站的代理IP。
1. # IP地址取自国内代理IP网站:https://www.dieniao.com/
2. # 爬取免费IP地址可以基础使用
3. from bs4 import BeautifulSoup
4. import requests
5. import random
6.
7. url = 'https://www.dieniao.com/FreeProxy.html'
8. headers = {
9. 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'
10. }
11. def get_ip_list(url, headers):
12. web_data = requests.get(url, headers=headers)
13. soup = BeautifulSoup(web_data.text, 'lxml')
14. ips = soup.find_all('tr')
15. ip_list = []
16. for i in range(1, len(ips)):
17. ip_info = ips[i]
18. tds = ip_info.find_all('td')
19. ip_list.append(tds[1].text + ':' + tds[2].text)
20. return ip_list
21.
22. def get_random_ip(ip_list):
23. proxy_list = []
24. for ip in ip_list:
25. proxy_list.append('http://' + ip)
26. proxy_ip = random.choice(proxy_list)
27. proxies = {'http': proxy_ip}
28. return proxies
29.
30. if __name__ == '__main__':
31.
32. ip_list = get_ip_list(url, headers=headers)
33. proxies = get_random_ip(ip_list)
34. print(proxies)#函数get_ip_list(url, headers)传入url和headers,最后返回一个IP列表,列表的元素类似49.86.182.94:9999格式,这个列表包括蝶鸟代理IP网站免费代理页面的IP地址和端口。
但是免费的代理大多数时候是不好用的,比较靠谱的是购买付费的优质代理IP。函数get_random_ip(ip_list)传入第一个函数得到的列表,返回一个随机的proxies,这个proxies可以传入到requests的get方法中,这样就可以做到每次运行都使用不同的IP访问被爬取的网站,有效地避免了真实IP被封的风险。
把获取的代理传入:
1. headers = {
2. 'User-Agent':'Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3 like Mac OS X; wo-SN) AppleWebKit/535.16.1 (KHTML, like Gecko) Version/4.0.5 Mobile/8B114 Safari/6535.16.1'
3. }
4. resp = requests.get('https://www.baidu.com',proxies = proxies,headers = headers)
5. print(resp.text)
就可以通过代理ip获取网站数据了。