05.python requests IP代理
一.問題
爬蟲程式單位時間訪問次數達到伺服器所限定的峰值,伺服器會封掉我們本地的ip
二.代理的作用
- 突破自身IP訪問的限制
- 隱藏自身真實IP
三.代理相關的網站
- 快代理
- 西祠代理
- www.goubanjia.com
四.代理ip的型別
- http:應用到http協議對應的url中
- https:應用到https協議對應的url中
五.代理ip的匿名度
- 透明:伺服器知道該次請求使用了代理,也知道請求對應的真實ip
- 匿名:知道使用了代理,不知道真實ip
- 高匿:不知道使用了代理,更不知道真實的ip
六.requests代理方法
1.單ip代理模式
import requests
proxy = {
'HTTPS': '162.105.30.101:8080'
}
url = '爬取連結地址'
response = requests.get(url,proxies=proxy)
2.多ip代理模式
import requests
#匯入random,對ip池隨機篩選
import random
proxy = [
{
'http': 'http://61.135.217.7:80',
'https': 'http://61.135.217.7:80',
},
{
'http': 'http://118.114.77.47:8080',
'https': 'http://118.114.77.47:8080',
},
{
'http': 'http://112.114.31.177:808',
'https': 'http://112.114.31.177:808',
},
{
'http': 'http://183.159.92.117:18118',
'https': 'http://183.159.92.117:18118',
},
{
'http': 'http://110.73.10.186:8123',
'https': 'http://110.73.10.186:8123',
},
]
url = '爬取連結地址'
response = requests.get(url,proxies=random.choice(proxy))
3.簡單的智聯招聘爬蟲封裝
import requests
from bs4 import BeautifulSoup
import re
import ssl
import time
import random
ssl._create_default_https_context = ssl._create_unverified_context
user_agent = [
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)",
"Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
"Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",
"Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",
"Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)",
"Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0",
"Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5",
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20",
"Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52",
]
'''
代理若出錯,替換代理池,但代理池需要更新
'''
# proxy = [
# {
# 'http': 'http://61.135.217.7:80',
# 'https': 'http://61.135.217.7:80',
# },
# {
# 'http': 'http://118.114.77.47:8080',
# 'https': 'http://118.114.77.47:8080',
# },
# {
# 'http': 'http://112.114.31.177:808',
# 'https': 'http://112.114.31.177:808',
# },
# {
# 'http': 'http://183.159.92.117:18118',
# 'https': 'http://183.159.92.117:18118',
# },
# {
# 'http': 'http://110.73.10.186:8123',
# 'https': 'http://110.73.10.186:8123',
# },
# ]
def get_job_txt(city,kw,txt_name):
for i in range(100):
time.sleep(2)
url = 'https://sou.zhaopin.com/jobs/searchresult.ashx?jl={2}&kw={0}&sm=0&p={1}'.format(kw,i,city)
response = requests.get(url,headers = {'User-Agent': random.choice(user_agent)}).content.decode()
soup =BeautifulSoup(response,'lxml')
tables = soup.select('.newlist')[1:]
if tables:
for table in tables:
job = table.select('.zwmc')[0].text
company = table.select('.gsmc')[0].text
money = table.select('.zwyx')[0].text
place = table.select('.gzdd')[0].text
href = table.select('.zwmc')[0].find('a')['href']
print(job+'\t'+company+'\t'+money+'\t'+place+'\t'+href+'\n')
with open('{0}.txt'.format(txt_name),'a+',encoding='utf-8',errors='ignore') as f:
f.write(job+'\t'+company+'\t'+money+'\t'+place+'\t'+href+'\n')
else:
print('總頁'+ str(i))
break
if __name__ == '__main__':
city = input('輸入城市')
kw = input('輸入崗位')
txt_name = input('輸入儲存檔名')
get_job_txt(city=city,kw=kw,txt_name=txt_name)
相關文章
- Python requests設定代理的方法Python
- 快代理代理IP測試,最新代理IP質量測試
- 淺析動態代理IP 海外代理IP介紹
- 在海外代理IP服務中,如何使用代理IP
- 高匿IP代理與透明IP代理的區別
- 隧道代理ip使用
- 區域性代理ip與全域性代理ip怎麼用?
- 高匿代理IP如何選擇?海外代理IP選擇技巧
- 高匿代理IP和透明代理IP有哪些區別?
- 如何選擇代理IP?
- 使用代理ip的原因
- 海外代理ip如何使用?
- python爬蟲利用requests製作代理池sPython爬蟲
- Python - 讓requests不走系統 全域性 代理Python
- 詳解HTTP代理與SOCKS代理 海外代理IP介紹HTTP
- 淺析正向代理與反向代理 海外代理IP介紹
- 切換代理IP時如何檢查IP?
- 代理ip最新識別方法及代理ip有效性檢測方法
- IPIDEA講述代理IP以及代理IP池的概念是什麼Idea
- Mac怎麼設定代理IP,蘋果系統設定http代理ip教程Mac蘋果HTTP
- 《探索Python Requests中的代理應用與實踐》Python
- HTTP代理IP怎麼使用HTTP
- 代理ip的功能介紹
- 代理ip的授權使用
- 代理IP是如何工作的?
- ip代理-Golang協程批次檢測代理線路Golang
- 技術分享:Proxy-Pool代理池搭建IP代理
- 使用代理IP輕鬆獲得韓國IP地址
- 獨享代理IP優勢有哪些?獨享代理IP三大優勢介紹
- 獨享IP代理相比較與其他代理IP型別隱匿性會更高嗎?型別
- 如何建立爬蟲代理ip池爬蟲
- 爬蟲使用代理防封IP爬蟲
- 深究免費代理ip的弊端
- 爬蟲如何使用ip代理池爬蟲
- 隧道代理IP的基本要求
- HTTP代理ip有什麼作用HTTP
- 代理IP如何突破反爬蟲?爬蟲
- 爬蟲代理怎麼選ip爬蟲