python怎么模擬瀏覽器交互_干貨分享:python爬蟲模擬瀏覽器的兩種方法實例分析(趕緊收藏)...

今天為大家帶來的內容是:干貨分享:python爬蟲模擬瀏覽器的兩種方法實例分析(趕緊收藏)

文章主要介紹了python爬蟲模擬瀏覽器的兩種方法,結合實例形式分析了Python爬蟲模擬瀏覽器的兩種常見操作技巧與使用注意事項,需要的朋友可以參考下!!!

本文實例講述了python爬蟲模擬瀏覽器的兩種方法。分享給大家供大家參考,具體如下:

爬蟲爬取網站出現403,因為站點做了防爬蟲的設置

一、Herders 屬性

爬取CSDN博客

爬取結果urllib.error.HTTPError: HTTP Error 403: Forbidden

這就說明CSDN做了一些設置,來防止別人惡意爬取信息

所以接下來,我們需要讓爬蟲模擬成瀏覽器

任意打開一個網頁,比如打開百度,然后按F12,此時會出現一個窗口,我們切換到Network標簽頁,然后點擊刷新網站,選中彈出框左側的“www.baidu.com”,即下圖所示:

往下拖動 我們會看到“User-Agent”字樣的一串信息,沒錯 這就是我們想要的東西。我們將其復制下來。

此時我們得到的信息是:”Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36”

接下來我們可以用兩種方式來模擬瀏覽器訪問網頁。

二、方法1:使用build_opener()修改報頭

由于urlopen()不支持一些HTTP的高級功能,所以我們需要修改報頭。可以使用urllib.request.build_opener()進行,我們修改一下上面的代碼:

上面代碼中我們先定義一個變量headers來儲存User-Agent信息,定義的格式是(“User-Agent”,具體信息)

具體信息我們上面已經獲取到了,這個信息獲取一次即可,以后爬取其他網站也可以用,所以我們可以保存下來,不用每次都F12去找了。

然后我們用urllib.request.build_opener()創建自定義的opener對象并賦值給opener,然后設置opener的addheaders,就是設置對應的頭信息,格式為:“opener(對象名).addheaders = [頭信息(即我們儲存的具體信息)]”,設置好后我們就可以使用opener對象的open()方法打開對應的網址了。格式:“opener(對象名).open(url地址)”打開后我們可以使用read()方法來讀取對應數據,并賦值給data變量。

得到輸出結果:

三、方法2:使用add_header()添加報頭

除了上面的這種方法,還可以使用urllib.request.Request()下的add_header()實現瀏覽器的模擬。

先上代碼:

好,我們來分析一下:

導入包,定義url地址我們就不說了,我們使用urllib.request.Request(url)創建一個Request對象,并賦值給變量req,創建Request對象的格式:urllib.request.Request(url地址)

隨后我們使用add_header()方法添加對應的報頭信息,格式:Request(對象名).add_header(‘對象名','對象值')

現在我們已經設置好了報頭,然后我們使用urlopen()打開該Request對象即可打開對應的網址,多以我們使用

data = urllib.request.urlopen(req).read()打開了對應的網址,并讀取了網頁內容,并賦值給data變量。

以上,我們使用了兩種方法實現了爬蟲模擬瀏覽器打開網址,并獲取網址的內容信息,避免了403錯誤。

值得我們注意的是,方法1中使用的是addheaders()方法,方法2中使用的是add_header()方法,注意末尾有無s以及有無下劃線的區別。

以上就是本文的全部內容啦!!!希望本文所述對大家Python程序設計有所幫助。

嗨嘍:正在學習python的小伙伴或者打算學習的,可以看下面領取資料!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276617.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276617.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276617.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue-cli3

github:https://github.com/vuejs/vue-cli org:https://cli.vuejs.org/ guide:https://cli.vuejs.org/guide/ config:https://cli.vuejs.org/config/ 轉載于:https://www.cnblogs.com/veritas-sj/p/10147789.html

Indy中判斷郵件來源

首先從TidMessage中獲得郵件的頭信息: strHeader:aIdMessage.Headers.text; 然后,用正則表達式取出Received: vReceiveIP:GetNeedStrByPerlReg(strHeader,(Received:)(.)(])); 再取出X-Originating-IP: vOriIP:GetNeedStrByPerlReg(strHea…

用jQuery實現彈出窗口/彈出div層

原文鏈接:http://hi.baidu.com/awz_tiger/item/863cfc10c4bb0f6171d5e8d9 http://blog.163.com/qiuxinke2006126/blog/static/24885580201131763139536/ http://hi.baidu.com/kilwin/blog/item/f4cfaf2695375920c9955947.html 用div層代替傳統的彈出窗口已經變得很…

模塊定義文件導出類_濃縮的就是精華——ES6模塊精煉講解

概述在 ES6 前, 實現模塊化使用的是 RequireJS 或者 seaJS(分別是基于 AMD 規范的模塊化庫, 和基于 CMD 規范的模塊化庫)。ES6 引入了模塊化,其設計思想是在編譯時就能確定模塊的依賴關系,以及輸入和輸出的變量。ES6 的模塊化分為…

關于快速開發和設計應用系統的一些個人的意見

作為程序員,經常會為我們的客戶去開發和設計各種應用系統,比如OA /CRM/物流調度/客戶服務/電子政務。。。及各種管理信息系統,我們經常會去開發和實現這樣的一些系統,每周、每月、每年經常都要去做這樣的一些開發工作,…

Jquery1.6版本后attr的變化

原文鏈接:http://www.cnblogs.com/-run/archive/2011/11/16/2251569.html Jquery1.6版本后attr的變化 Jquery1.6版本后 attr 改動后的效果: jquery1.6版本: 下文來自www.jquery.com The difference betweenattributes and properties can b…

idea main scanner 輸入_哇曬,你竟然不知道idea的 Live Templates

最近公司新近來一名程序猿,在寫代碼時,美美寫到System.out.println的時候,都要一母不差的用鍵盤敲上去,我問他你之前有用過eclipse中的快捷方法syso嗎?于是,我給他介紹了一下,在idea中如何自定義…

Android開發需要了解的 IM 知識

引言即便在通訊如此發達的今天,IM 也依然是諸多場景下非常重要的基礎能力。因此做為 一名 Android 開發,不可避免的會遇到一些IM 相關的需求或問題。本文以一個Android開發的角度來講述IM 開發相關的基礎知識。想要閱讀更多技術干貨、行業洞察&#xff0…

偷梁換柱做自己的封裝系統

偷梁換柱做自己的封裝系統!菜鳥一開始都想把自己的信息加到系統里,但封裝系統只會一點!但我們可“拿來”,我們可以用偷梁換柱的方法來修改別人的系統,本文以雨林的GHOST5.0系統為例。一、準備工作1、當然是下載一個自己…

JQuery 1.6+ checkbox 狀態選擇

示例&#xff1a; HTML: <form><table><tr><td><input type"checkbox" id"select_all"/></td></tr><tr><td><input type"checkbox" name"select[]"/></td></…

臺電u盤量產工具_簡單幾步,讓U盤起死回生

如今&#xff0c;雖說云存儲風靡&#xff0c;但U盤仍存在價值&#xff0c;畢竟在很多場合并不方便上網&#xff0c;即便如此網上存儲有時也并不方便&#xff0c;也不安全。與此同時&#xff0c;如果是大文件存儲&#xff0c;云盤上傳和下載速度非常慢&#xff0c;并不適合海量數…

PXC集群常見錯誤(一)

歡迎關注MySQL 8.0必知必會系列課程。MySQL8.0必知必會-自動化部署 https://edu.51cto.com/course/16368.htmlMySQL8.0必知必會之參數標準化配置 https://edu.51cto.com/course/16358.html1.Cant start server: Bind on TCP/IP port: Address already in use…

獲取GridView中RowCommand的當前選中行的索引或主鍵Id

獲取GridView中RowCommand的當前索引行 前臺添加一模版列,里面添加一個LinkButton前臺 (如果在后臺代碼中用e.CommandArgument取值的話前臺代碼就必須在按鈕中設置CommandArgument的值&#xff0c;值為綁定的數據庫字段<asp:TemplateField HeaderText"操作"> …

系統架構師 項目經理 哪個更有前景_中央空調加地暖與五恒系統,哪個更省錢?...

每逢嚴冬酷暑,人們都會感嘆空調是最偉大的發明,并且隨著科技發展還在不斷進化。從烤火取暖到空調和地暖的供暖,從紙扇電扇的吹風到空調的制冷,人們的需求正在不斷提高,于是,為了滿足人們的需求&#xff0c;市場上又衍生出了家裝五恒系統。 恒溫、恒濕、恒氧、恒潔、恒靜這…

軟件架構基本原則

軟件架構本質上是繪制一幅復雜素描所打的草稿&#xff0c;我還說&#xff0c;如果你罩得住&#xff0c;可以不需要這個草稿。但這只是“理論上”&#xff0c;我們寫軟件&#xff0c;基本上不是在寫只有幾千行的代碼的小程序&#xff0c;而是寫數千萬行的大型程序。《道德經》說…

Smarty目錄結構和子目錄路徑問題

原文鏈接&#xff1a;http://bbs.csdn.net/topics/80223905 問題 1).最初在模板文件中使用了絕對路徑&#xff08;相對于站點根的路徑 ).如在system_info.tpl中圖片是這樣顯示的<img src"/templates/default/images/logo.gif"/>這樣當系統發布時&#xff0c;…

c++直角坐標系與極坐標系的轉換_一篇閱讀量高達2百6十多萬的關于坐標系和投影的相關知識探討...

本文轉載于CSDN作者rsyaoxin這是一篇關于坐標和投影的「神文」截止目前瀏覽量已達2698239是相關文章中不可打破的神話...文末有本文作者推薦的兩款坐標轉換的小工具下載鏈接回想一下&#xff0c;接觸遙感專業也有幾個年頭了&#xff0c;而現在越來越偏離遙感了&#xff0c;突然…

c# xmlhttp POST提取遠程webservice數據

public string cancel(string StudentID,string Mobile){string datanull;data "<?xml version1.0 encodingutf-8?><soap:Envelope xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:xsdhttp://www.w3.org/2001/XMLSchema xmlns:soaphttp://schemas.…

Javascript實現的左右滑動菜單

原文鏈接&#xff1a;http://www.cnblogs.com/miqi2214/archive/2009/04/28/1445308.html Javascript實現的左右滑動菜單 先看Demo便于理解&#xff1a;請大家往這里看 業務需求&#xff1a; 1. 菜單個數不固定&#xff0c;當菜單個數長度小于給定范圍寬度&#xff0c;則左右移…

查詢用戶分配角色TCODE

s_bce_68001419 轉載于:https://www.cnblogs.com/yangliang/archive/2009/04/13/1434862.html