前言:
当你需要在同一个网站爬取大量信息的时候,通常你会遇到各种各种各样的阻挠,其中一种就是IP被封,这时代理IP就成了我们不二的选择,我们下面的IP来源于http://www.xicidaili.com/
代码:
# IP地址取自国内髙匿代理IP网站:http://www.xicidaili.com/nn/ from bs4 import BeautifulSoup import requests import random #功能:爬取IP存入ip_list列表 def get_ip_list(url, headers): web_data = requests.get(url, headers=headers) soup = BeautifulSoup(web_data.text, 'lxml') ips = soup.find_all('tr') ip_list = [] for i in range(1, len(ips)): ip_info = ips[i] tds = ip_info.find_all('td') if not tds[8].text.find('天')==-1: print('tds[8]为:'+str(tds[8])) ip_list.append(tds[1].text + ':' + tds[2].text) print(tds[1].text + ':' + tds[2].text) return ip_list #功能:1,将ip_list中的IP写入IP.txt文件中 # 2,获取随机IP,并将随机IP返回 def get_random_ip(ip_list): proxy_list = [] for ip in ip_list: proxy_list.append('http://' + ip) f=open('IP.txt','a+',encoding='utf-8') f.write('http://' + ip) f.write('\n') f.close() proxy_ip = random.choice(proxy_list) proxies = {'http': proxy_ip} return proxies if __name__ == '__main__': for i in range(1,40): url = 'http://www.xicidaili.com/wt/{}'.format(i) headers = { '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' } ip_list = get_ip_list(url, headers=headers) proxies = get_random_ip(ip_list) print(proxies)
需要注意的一点是proxies的格式是一个字典:{‘http’: ‘http://42.84.226.65:8888‘}