zoukankan      html  css  js  c++  java
  • 04_Python爬蟲入門遇到的坑__向搜索引擎提交關鍵字02

    4. 向百度提交關鍵字:

    上一篇文章我們向360提交了關鍵字,這次的內容是向百度提交關鍵字

    在獲取接口之後我們直接套用上一次的代碼先試試看:

    import requests
    
    # 接口
    url = "https://www.baidu.com/s?"
    # 需要提交的字典(我們要搜索的內容,此處假設為python)
    kv = {"wd": "python"}
    # 訪問偷
    head = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36",
    }
    try:
        # 請求頁面
        r = requests.get(url, headers=head, params=kv)
        # 判斷請求狀態
        r.raise_for_status()
        # 輸出源碼
        print(r.text)
        print("成功!!")
    except:
        print("頁面獲取失敗!")

    這時候你會發現輸出的內容特別少,其中還有這樣一行:

     <div class="timeout-title">网络不给力,请稍后重试</div>

    這顯然不對,因為你爬取下來的頁面是這個:

    爬取失敗

    或許你馬上就會想到加上cookie,沒問題的,這完全是可以的,但是我今天要講的是另外一種方法.

    在header中添加accept:

    import requests
    
    # 接口
    url = "https://www.baidu.com/s?"
    # 搜索的關鍵字
    kv = {"wd": "java"}
    # 頭部信息
    head = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
    }
    
    try:
        # 請求頁面
        r = requests.get(url, headers=head, params=kv)
        # 判斷請求狀態
        r.raise_for_status()
        # 使用備用編碼
        r.encoding = r.apparent_encoding
        # 輸出源碼
        print(r.text)
        print("成功!!")
    except:
        print("頁面獲取失敗!")

    這時候便能得到正確的結果:

    輸出結果

    總結:cookie很有用,但不代表每次都需要!

  • 相关阅读:
    nodejs 核心模块crypto
    es6新特性学习
    nodejs 常用全局包
    ionic+angular+cordova 安卓环境搭建
    谷歌浏览器调试保存到文件
    Linux命令
    Linux中用户管理详解(上)-Linux学习日记
    liunx下忘记root密码的解决方法
    cvCanny的参数
    VC运行时库(/MD、/MT等)
  • 原文地址:https://www.cnblogs.com/ltozvxe/p/12866637.html
Copyright © 2011-2022 走看看