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

python爬蟲模擬瀏覽器的兩種方法實(shí)例分析

 更新時(shí)間:2019年12月09日 11:24:57   作者:Uzizi  
這篇文章主要介紹了python爬蟲模擬瀏覽器的兩種方法,結(jié)合實(shí)例形式分析了Python爬蟲模擬瀏覽器的兩種常見操作技巧與使用注意事項(xiàng),需要的朋友可以參考下

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

爬蟲爬取網(wǎng)站出現(xiàn)403,因?yàn)檎军c(diǎn)做了防爬蟲的設(shè)置

一、Herders 屬性

爬取CSDN博客

import urllib.request
url = "http://blog.csdn.net/hurmishine/article/details/71708030"file = urllib.request.urlopen(url)

爬取結(jié)果

urllib.error.HTTPError: HTTP Error 403: Forbidden

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

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

任意打開一個(gè)網(wǎng)頁,比如打開百度,然后按F12,此時(shí)會(huì)出現(xiàn)一個(gè)窗口,我們切換到Network標(biāo)簽頁,然后點(diǎn)擊刷新網(wǎng)站,選中彈出框左側(cè)的“www.baidu.com”,即下圖所示:

往下拖動(dòng) 我們會(huì)看到“User-Agent”字樣的一串信息,沒錯(cuò) 這就是我們想要的東西。我們將其復(fù)制下來。

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

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

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

由于urlopen()不支持一些HTTP的高級(jí)功能,所以我們需要修改報(bào)頭??梢允褂胾rllib.request.build_opener()進(jìn)行,我們修改一下上面的代碼:

import urllib.request
url = "http://blog.csdn.net/hurmishine/article/details/71708030"headers = ("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36")
opener = urllib.request.build_opener()
opener.addheaders = [headers]
data = opener.open(url).read()
print(data)

上面代碼中我們先定義一個(gè)變量headers來儲(chǔ)存User-Agent信息,定義的格式是(“User-Agent”,具體信息)
具體信息我們上面已經(jīng)獲取到了,這個(gè)信息獲取一次即可,以后爬取其他網(wǎng)站也可以用,所以我們可以保存下來,不用每次都F12去找了。

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

得到輸出結(jié)果

b'\r\n<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r\n     \r\n    <html xmlns="http://www.w3.org/1999/xhtml">\r\n    \r\n<head>  \r\n\r\n            <link rel="canonical" rel="external nofollow" /> ...

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

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

先上代碼

import urllib.request
url = "http://blog.csdn.net/hurmishine/article/details/71708030"req = urllib.request.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36')
data = urllib.request.urlopen(req).read()
print(data)

好,我們來分析一下。

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

隨后我們使用add_header()方法添加對(duì)應(yīng)的報(bào)頭信息,格式:Request(對(duì)象名).add_header(‘對(duì)象名','對(duì)象值')

現(xiàn)在我們已經(jīng)設(shè)置好了報(bào)頭,然后我們使用urlopen()打開該Request對(duì)象即可打開對(duì)應(yīng)的網(wǎng)址,多以我們使用

data = urllib.request.urlopen(req).read()打開了對(duì)應(yīng)的網(wǎng)址,并讀取了網(wǎng)頁內(nèi)容,并賦值給data變量。

以上,我們使用了兩種方法實(shí)現(xiàn)了爬蟲模擬瀏覽器打開網(wǎng)址,并獲取網(wǎng)址的內(nèi)容信息,避免了403錯(cuò)誤。

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

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python Socket編程技巧總結(jié)》、《Python正則表達(dá)式用法總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 如何用用Python制作NFT區(qū)塊鏈作品

    如何用用Python制作NFT區(qū)塊鏈作品

    在本文中,我們將學(xué)習(xí)如何使用 Brownie、Python 和 Chainlink 來制作非同質(zhì)化的 NFT 作品,并在 OpenSea NFT 市場(chǎng)上展示和銷售我們的成果。
    2021-06-06
  • 將.py文件轉(zhuǎn)化為.exe文件的詳細(xì)過程

    將.py文件轉(zhuǎn)化為.exe文件的詳細(xì)過程

    學(xué)Python那么久了,才知道自己不會(huì)把腳本編譯成可執(zhí)行exe文件,下面這篇文章主要給大家介紹了關(guān)于將.py文件轉(zhuǎn)化為.exe文件的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • 利用numba讓python速度提升百倍

    利用numba讓python速度提升百倍

    這篇文章主要介紹了利用numba讓python速度提升百倍,python由于它動(dòng)態(tài)解釋性語言的特性,numba是一款可以將python函數(shù)編譯為機(jī)器代碼的JIT編譯器,下面針對(duì)numba相關(guān)內(nèi)容展開,需要的小伙伴可以參考一下
    2022-03-03
  • 淺談Python2之漢字編碼為unicode的問題(即類似\xc3\xa4)

    淺談Python2之漢字編碼為unicode的問題(即類似\xc3\xa4)

    今天小編就為大家分享一篇淺談Python2之漢字編碼為unicode的問題(即類似\xc3\xa4),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python方差檢驗(yàn)的含義及用法

    python方差檢驗(yàn)的含義及用法

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python方差檢驗(yàn)的含義及用法,有需要的朋友們可以跟著學(xué)習(xí)參考下。
    2021-07-07
  • 如何使用PyCharm將代碼上傳到GitHub上(圖文詳解)

    如何使用PyCharm將代碼上傳到GitHub上(圖文詳解)

    這篇文章主要介紹了如何使用PyCharm將代碼上傳到GitHub上(圖文詳解),文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 學(xué)習(xí)python之編寫簡(jiǎn)單簡(jiǎn)單連接數(shù)據(jù)庫并執(zhí)行查詢操作

    學(xué)習(xí)python之編寫簡(jiǎn)單簡(jiǎn)單連接數(shù)據(jù)庫并執(zhí)行查詢操作

    這篇文章主要介紹了學(xué)習(xí)python之編寫簡(jiǎn)單簡(jiǎn)單連接數(shù)據(jù)庫并執(zhí)行查詢操作,需要的朋友可以參考下
    2016-02-02
  • numpy展平數(shù)組ndarray.flatten()詳解

    numpy展平數(shù)組ndarray.flatten()詳解

    這篇文章主要介紹了numpy展平數(shù)組ndarray.flatten()詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 使用PySpark實(shí)現(xiàn)數(shù)據(jù)清洗與JSON格式轉(zhuǎn)換的實(shí)踐詳解

    使用PySpark實(shí)現(xiàn)數(shù)據(jù)清洗與JSON格式轉(zhuǎn)換的實(shí)踐詳解

    在大數(shù)據(jù)處理中,PySpark?提供了強(qiáng)大的工具來處理海量數(shù)據(jù),特別是在數(shù)據(jù)清洗和轉(zhuǎn)換方面,本文將介紹如何使用?PySpark?進(jìn)行數(shù)據(jù)清洗,并將數(shù)據(jù)格式轉(zhuǎn)換為?JSON?格式的實(shí)踐,感興趣的可以了解下
    2023-12-12
  • 通過Python爬蟲代理IP快速增加博客閱讀量

    通過Python爬蟲代理IP快速增加博客閱讀量

    本文主要對(duì)通過Python爬蟲代理IP快速增加博客閱讀量的方法進(jìn)行分析介紹。具有很好的參考價(jià)值,需要的朋友一起來看下吧
    2016-12-12

最新評(píng)論