为什么要使用代理

由于使用固定的IP地址,会被所爬取的网站封掉IP禁止爬虫。所以使用代理可以避免被封掉IP爬取不到内容。
在交换期间,听说CCU同学爬取stackoverflow内容,造成工学院的网络不能登录stackoverflow。😅

#encoding=utf-8
from bs4 import BeautifulSoup
import requests
import random
headers = {
'accept': "*/*",
'accept-language': "zh-CN,zh;q=0.8,zh-TW;q=0.6",
'content-type': "application/x-www-form-urlencoded",
'user-agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36",
'x-requested-with': "XMLHttpRequest",
'cache-control': "no-cache",
}
def getproxy():
url="http://www.xicidaili.com/nn/"; #代理网站
r=requests.get(url,headers=headers) #使用requests库,直接回去response内容
soup=BeautifulSoup(r.text,'html.parser') #获取BeautifulSoup对象
ip=''
port=''
proxy_list=[]
for odd in soup.find_all('tr',class_='odd'): #每一个IP都在<tr>中,并且class为odd
i=1
for td in odd.find_all('td'): #获取第二个和第三个td内容,分别是IP和Port
if(i==2):
ip=td.text
if(i==3):
port=td.text
proxy = 'http://'+ip + ':' + port
proxy_list.append(proxy) #将内容添加到数组里
i=i+1
r = random.randint(0, 2)
return proxy_list[r]
#以下内容为爬去知乎日报的测试
# ip=getproxy()
#
# proxies={
# 'http':ip
# }
# url='http://daily.zhihu.com'
#
# response=requests.get(url,headers=headers,proxies=proxies)
# print response.text