01_Python爬蟲入門遇到的坑__反爬蟲策略01
Posted Ltozvxe
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了01_Python爬蟲入門遇到的坑__反爬蟲策略01相关的知识,希望对你有一定的参考价值。
1. 爬取京東商品頁面:
我們現在要爬取這個商品的頁面的詳細信息:【今日必抢 GFI联名版】原装直邮 高端定制 2020夏季新款手工时尚休闲鞋 绿色-定制款 41-标准运动鞋码
要求:
1. 只需要拿到原始代碼就可以了,不用獲得商品的具體信息
我們直接看代碼:
import requests # 需要爬取的商品頁面 url = "https://item.jd.com/68001860009.html" try: # 請求頁面 r = requests.get(url) # 判斷狀態碼, 如果連接狀態不正確, 會自動拋出異常 r.raise_for_status() # 使用備用編碼集 r.encoding = r.apparent_encoding # 查看獲取的源碼 print(r.text) except: # 爬取失敗 print(\'頁面獲取失敗\')
如果不出所料你會得到下面的結果:
<script>window.location.href=\'https://passport.jd.com/uc/login?ReturnUrl=http://item.jd.com/68001860009.html\'</script>
這個的意思也就是說這個頁面使用了反爬蟲技術,禁止機器人訪問.所以你可以模擬瀏覽器提交請求,你只需要添加一點點代碼.
import requests # 需要爬取的商品頁面 url = "https://item.jd.com/68001860009.html" \'\'\' 使用帶headers的請求, head中的User-Agent表示請求的對象,Mozilla/5.0是一個標準的瀏覽器請求 後面的則是表示平台和使用的瀏覽器版本 \'\'\' 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(\'頁面獲取失敗\')
ps: 查看自己提交的信息:
import requests url = "https://item.jd.com/68001860009.html" 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" } # 默認訪問方式 r1 = requests.get(url) # 查看提交的url print(r1.request.url) # 查看請求的headers print(r1.request.headers) # 加上headers之後訪問 r2 = requests.get(url, headers=head) print(r2.request.url) print(r2.request.headers)
你會得到如下結果:
https://item.jd.com/68001860009.html {\'User-Agent\': \'python-requests/2.22.0\', \'Accept-Encoding\': \'gzip, deflate\', \'Accept\': \'*/*\', \'Connection\': \'keep-alive\'} https://item.jd.com/68001860009.html {\'User-Agent\': \'Mozilla/5.0\\xa0(Windows\\xa0NT\\xa010.0;\\xa0Win64;\\xa0x64)\\xa0AppleWebKit/537.36\\xa0(KHTML,\\xa0like\\xa0Gecko)\\xa0Chrome/80.0.3987.149\\xa0Safari/537.36\', \'Accept-Encoding\': \'gzip, deflate\', \'Accept\': \'*/*\', \'Connection\': \'keep-alive\'}
由此我們可以看出當使用默認的請求的時候我們所提交的請求之中User-Agent是 python-requests/2.22.0,也就是說,如果使用默認的訪問方式,我們等同於直接告訴網站我是個機器人,你快來攔截我好嗎.
總結:很多網站都設有反爬蟲,使用headers能很好的偽裝自己
以上是关于01_Python爬蟲入門遇到的坑__反爬蟲策略01的主要内容,如果未能解决你的问题,请参考以下文章
openEuler-22.03系统安装openGauss3.0.0 企业版过程中遇到的坑