欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python爬蟲基礎之簡易網頁搜集器

 更新時間:2021年04月26日 10:19:36   作者:世界的隱喻  
這篇文章主要介紹了python爬蟲基礎之簡易網頁搜集器,文中有非常詳細的代碼示例,對正在學習python爬蟲的小伙伴們有非常好的幫助,需要的朋友可以參考下

簡易網頁搜集器

前面我們已經學會了簡單爬取瀏覽器頁面的爬蟲。但事實上我們的需求當然不是爬取搜狗首頁或是B站首頁這么簡單,再不濟,我們都希望可以爬取某個特定的有信息的頁面。

不知道在學會了爬取之后,你有沒有跟我一樣試著去爬取一些搜索頁面,比如說百度。像這樣的頁面

在這里插入圖片描述

注意我紅筆劃的部分,這是我打開的網頁?,F(xiàn)在我希望能爬取這一頁的數據,按我們前面學的代碼,應該是這樣寫的:

import requests

if __name__ == "__main__":
    # 指定URL
    url = "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=2&tn=93923645_hao_pg&wd=%E5%A5%A5%E7%89%B9%E6%9B%BC&rsv_spt=1&oq=%25E7%2588%25AC%25E5%258F%2596%25E7%2599%25BE%25E5%25BA%25A6%25E9%25A6%2596%25E9%25A1%25B5&rsv_pq=b233dcfd0002d2d8&rsv_t=ccdbEuqbJfqtjnkFvevj%2BfxQ0Sj2UP88ixXHTNUNsmTa9yWEWTUEgxTta9r%2Fj3mXxDs%2BT1SU&rqlang=cn&rsv_dl=tb&rsv_enter=1&rsv_sug3=8&rsv_sug1=5&rsv_sug7=100&rsv_sug2=0&rsv_btype=t&inputT=1424&rsv_sug4=1424"

    # 發(fā)送請求
    response = requests.get(url)

    # 獲取數據
    page_text = response.text

    # 存儲
    with open("./奧特曼.html", "w", encoding = "utf-8") as fp:
        fp.write(page_text)

    print("爬取成功?。?!")

然而打開我們保存的文件,發(fā)現(xiàn)結果跟我們想的不太一樣

在這里插入圖片描述

我們發(fā)現(xiàn)我們保存的文件是一個空白的頁面,這是為什么呢?

其實上我們把網址改成搜狗的可能或更直觀一些(不知道為什么我這邊的搜狗總是打不開,所以就用百度做例子,可以自己寫寫有關搜狗搜索的代碼),同樣的代碼改成搜狗的網址結果是這樣的

在這里插入圖片描述

我們發(fā)現(xiàn)其中有句話是 “ 網絡中存在異常訪問 ”,那么這句話是什么意思呢?

這句話的意思就是說,搜狗或是百度注意到發(fā)送請求的是爬蟲程序,而不是人工操作。

那么這其中的原理又是什么呢?

簡單來說,就是程序訪問和我們使用瀏覽器訪問是有區(qū)別的,被請求的服務器都是靠 user-agent 來判斷訪問者的身份,如果是瀏覽器就接受請求,否則就拒絕。這就是一個很常見的反爬機制。

那是不是我們就沒有辦法呢?

非也~所謂魔高一尺,道高一丈。既然要識別 user-agent ,那么我們就讓爬蟲模擬 user-agent 好了。

在 python 中模擬輸入數據或是 user-agent ,我們一般用字典

就這樣子寫:

header = {
	"user-agent": "" # user-agent 的值 是一個長字符串
	}

那么 user-agent 的值又是怎么得到的呢?

1. 打開任意網頁,右鍵點擊,選擇“檢查”

2. 選擇“ Network ”(谷歌瀏覽器)(如果是中文,就選擇 “網絡” 這一項)

在這里插入圖片描述

3. 如果發(fā)現(xiàn)點開是空白的,像這樣,那就刷新網頁

在這里插入圖片描述

刷新后是這樣的:

在這里插入圖片描述

然后隨機選擇紅筆圈起來的一項,我們會看到這樣的東西,然后在里面找到“user-agent”,把它的值復制下來就行了

在這里插入圖片描述

有了 “user-agent”, 我們在重新寫我們的爬取網頁的代碼,就可以了

import requests

if __name__ == "__main__":
    # 指定URL
    url = "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=2&tn=93923645_hao_pg&wd=%E5%A5%A5%E7%89%B9%E6%9B%BC&rsv_spt=1&oq=%25E7%2588%25AC%25E5%258F%2596%25E7%2599%25BE%25E5%25BA%25A6%25E9%25A6%2596%25E9%25A1%25B5&rsv_pq=b233dcfd0002d2d8&rsv_t=ccdbEuqbJfqtjnkFvevj%2BfxQ0Sj2UP88ixXHTNUNsmTa9yWEWTUEgxTta9r%2Fj3mXxDs%2BT1SU&rqlang=cn&rsv_dl=tb&rsv_enter=1&rsv_sug3=8&rsv_sug1=5&rsv_sug7=100&rsv_sug2=0&rsv_btype=t&inputT=1424&rsv_sug4=1424"

    # 模擬 “user-agent”,即 UA偽裝
    header = {
        "user-agent" : "" # 復制的 user-agent 的值
        }
    # 發(fā)送請求
    response = requests.get(url, headers = header)

    # 獲取數據
    page_text = response.text

    # 存儲
    with open("./奧特曼(UA偽裝).html", "w", encoding = "utf-8") as fp:
        fp.write(page_text)

    print("爬取成功?。?!")

再次運行,然后打開文件

在這里插入圖片描述

這次成功了,說明我們的爬蟲程序完美地騙過了服務器

到此這篇關于python爬蟲基礎之簡易網頁搜集器的文章就介紹到這了,更多相關python網頁搜集器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python使用PyGame實現(xiàn)打磚塊游戲

    python使用PyGame實現(xiàn)打磚塊游戲

    打磚塊也是一個非常經典的小游戲,玩法大致如下,用一個小車接一個小球,然后反射小球,使之打在磚塊上,當小球碰到磚塊之后,則磚塊被消掉,邏輯十分清晰,本文將給大家介紹了python使用PyGame實現(xiàn)打磚塊游戲,文中有詳細的代碼示例供大家參考,需要的朋友可以參考下
    2023-12-12
  • Python基礎之hashlib模塊subprocess模塊logging模塊

    Python基礎之hashlib模塊subprocess模塊logging模塊

    這篇文章主要為大家介紹了Python基礎之hashlib模塊subprocess模塊logging模塊示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Python不使用庫進行矩陣運算詳解

    Python不使用庫進行矩陣運算詳解

    這篇文章主要介紹了Python不使用庫進行矩陣運算詳解,矩陣乘法中,需要判斷兩個矩陣是否可以進行相乘,即前一個矩陣的列是否等于后一個矩陣的行,,需要的朋友可以參考下
    2023-08-08
  • python等待10秒執(zhí)行下一命令的方法

    python等待10秒執(zhí)行下一命令的方法

    在本篇文章里小編給大家整理的是關于python等待10秒執(zhí)行下一命令的方法及實例,需要的朋友們可以參考下。
    2020-07-07
  • python3使用python-redis-lock解決并發(fā)計算問題

    python3使用python-redis-lock解決并發(fā)計算問題

    本文主要介紹了python3使用python-redis-lock解決并發(fā)計算問題,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 基于python調用psutil模塊過程解析

    基于python調用psutil模塊過程解析

    這篇文章主要介紹了基于python調用psutils模塊過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Flask教程之重定向與錯誤處理實例分析

    Flask教程之重定向與錯誤處理實例分析

    這篇文章主要介紹了Flask教程之重定向與錯誤處理,結合實例形式分析了flask框架重定向、狀態(tài)碼判斷及錯誤處理相關操作技巧,需要的朋友可以參考下
    2019-08-08
  • Python理解遞歸的方法總結

    Python理解遞歸的方法總結

    在本篇文章里小編給大家分享了關于如何使用Python來理解遞歸的知識點內容,有興趣的朋友們學習下。
    2019-01-01
  • Python中的條件判斷語句與循環(huán)語句用法小結

    Python中的條件判斷語句與循環(huán)語句用法小結

    這篇文章主要介紹了Python中的條件判斷語句與循環(huán)語句用法小結,條件語句和循環(huán)語句是Python程序流程控制的基礎,需要的朋友可以參考下
    2016-03-03
  • 使用Python神器對付12306變態(tài)驗證碼

    使用Python神器對付12306變態(tài)驗證碼

    這篇文章主要介紹了使用Python神器對付12306變態(tài)驗證碼的相關資料,需要的朋友可以參考下
    2016-01-01

最新評論