<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
爬蟲要想爬的好,IP代理少不了。。現在網站基本都有些反爬措施,存取速度稍微快點,就會發現IP被封,不然就是提交驗證。下面就兩種常用的模組來講一下代理IP的使用方式。話不多說,直接開始。
requests
中使用代理IP只需要新增一個proxies
引數即可。proxies
的引數值是一個字典,key
是代理協定(http/https),value
就是ip和埠號,具體格式如下。
try: response = requests.get('https://httpbin.org/ip', headers=headers, proxies={'https':'https://221.122.91.74:9401'}, timeout=6) print('success') # 檢測代理IP是否使用成功 # 第一種方式,返回傳送請求的IP地址,使用時要在 get() 新增 stream = True # print(response.raw._connection.sock.getpeername()[0]) # 第二種方式,直接返回測試網站的響應資料的內容 print(response.text) except Exception as e: print('error',e)
注意: peoxies
的key
值(http/https
)要和url
一致,不然會直接使用本機IP直接存取。
由於requests
模組不支援非同步,迫不得已使用aiohttp
,掉了不少坑。
它的使用方式和requests
相似,也是在get()
方法中新增一個引數,但此時的引數名為proxy
,引數值是字串,且字串中的代理協定,只支援http
,寫成https
會報錯。
這裡記錄一下我的糾錯歷程。。
首先根據網上的使用方式,我先試了一下下面的程式碼。
async def func(): async with aiohttp.ClientSession() as session: try: async with session.get("https://httpbin.org/ip", headers=headers, proxy='http://183.220.145.3:80', timeout=6) as response: page_text = await response.text() print('success') print(page_text) except Exception as e: print(e) print('error') if __name__=='__main__': asyncio.run(func())
修改後,再來
async def func(): con = aiohttp.TCPConnector(verify_ssl=False) async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=False)) as session: try: async with session.get("https://httpbin.org/ip", headers=headers, proxy='http://183.220.145.3:80', timeout=6) as response: # print(response.raw._connection.sock.getpeername()[0]) page_text = await response.text() print(page_text) print('success') except Exception as e: print(e) print('error')
非但沒有解決反倒多了一個警告,好在改一下就好。額~懶得粘了,直接來最終版本吧。。
# 修改事件迴圈的策略,不能放在協程函數內部,這條語句要先執行 asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) async def func(): # 新增trust_env=True async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=False), trust_env=True) as session: try: async with session.get("https://httpbin.org/ip", headers=headers, proxy='http://183.220.145.3:80', timeout=10) as response: page_text = await response.text() print(page_text) print('success') except Exception as e: print(e) print('error')
雖然糾錯過程有點長,但好在知道怎麼用了。
到此這篇關於Python非同步爬蟲requests和aiohttp中代理IP的使用的文章就介紹到這了,更多相關requests和aiohttp中代理IP內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45