02_Python爬蟲入門遇到的坑__反爬蟲策略02
02. 爬取亞馬遜的商品頁面:
獲取亞馬遜商品頁面的詳細信息: 杀死一只知更鸟(“塑造美国的88部图书”之一,普利策奖、奥斯卡金像奖获奖作品、影响全球5000万家庭的教养圣经,奥巴马、贝克汉姆、奥普拉鼎力推荐) (哈珀·李作品) Kindle电子书
這次我們有了經驗,直接一開始在一開始就加上headers屬性.
import requests # 需要爬取的商品頁面 url = "https://www.amazon.cn/dp/B06VSFXC4C" head = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36" } try: # 請求頁面 r = requests.get(url, headers=head) # 判斷狀態碼, 如果連接狀態不正確, 會自動拋出異常 r.raise_for_status() # 使用備用編碼集 r.encoding = r.apparent_encoding # 查看獲取的源碼 print(r.text) except: # 爬取失敗 print("頁面獲取失敗")
然後你會在輸出結果中看見這麼一段:
<p class="a-last">抱歉,我们只是想确认一下当前访问者并非自动程序。为了达到最佳效果,请确保您浏览器上的 Cookie 已启用。</p>
不要認為有輸出就已經正確了,事實上這句話的意思是你依舊被判定為一個機器人,你需要加上cookies屬性才能正常訪問,所以將代碼修改為如下結果:
import requests # 需要爬取的商品頁面 url = "https://www.amazon.cn/dp/B06VSFXC4C" head = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36", "cookie": '請依據自己的實際情況修改,獲取cookie方法下一步會講解!', } try: # 請求頁面 r = requests.get(url, headers=head) # 判斷狀態碼, 如果連接狀態不正確, 會自動拋出異常 r.raise_for_status() # 使用備用編碼集 r.encoding = r.apparent_encoding # 查看獲取的源碼 # print(r.text) with open("amazon.html", mode="wb") as f: f.write(r.content) f.close() print("成功!") except: # 爬取失敗 print("頁面獲取失敗")
這時候便能獲取到正確的網頁信息.
如果獲取自己的cookie:
0. 登錄自己的賬號并進入相關的頁面
1. 按F12進入調試頁面
2. 點擊Network查看詳細信息
3. 在headers中查看自己提交的信息
4. 複製自己的cookie到代碼之中
總結:在必要的時候我們需要加上cookie訪問
分类:
Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用