• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Asc.416e74
博客园    首页    新随笔    联系   管理     

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能很好的偽裝自己

 

posted @ 2020-05-11 02:06  ストッキング  阅读(499)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3