最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實(shí)現(xiàn)三種隨機(jī)請(qǐng)求頭方式

 更新時(shí)間:2021年01月05日 10:01:09   作者:沙漏在下雨  
這篇文章主要介紹了python實(shí)現(xiàn)三種隨機(jī)請(qǐng)求頭方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

相信大家在爬蟲(chóng)中都設(shè)置過(guò)請(qǐng)求頭 user-agent 這個(gè)參數(shù)吧? 在請(qǐng)求的時(shí)候,加入這個(gè)參數(shù),就可以一定程度的偽裝成瀏覽器,就不會(huì)被服務(wù)器直接識(shí)別為spider.demo.code ,據(jù)我了解的,我很多讀者每次都是直接從network 中去復(fù)制 user-agent 然后把他粘貼到代碼中, 這樣獲取的user-agent 沒(méi)有錯(cuò),可以用, 但是如果網(wǎng)站反爬措施強(qiáng)一點(diǎn),用固定的請(qǐng)求頭可能就有點(diǎn)問(wèn)題, 所以我們就需要設(shè)置一個(gè)隨機(jī)請(qǐng)求頭,在這里,我分享一下我自己一般用的三種設(shè)置隨機(jī)請(qǐng)求頭方式

思路介紹:

其實(shí)要達(dá)到隨機(jī)的效果,很大程度上我們可以利用隨機(jī)函數(shù)庫(kù)random 這個(gè)來(lái)實(shí)現(xiàn),可以調(diào)用random.choice([user-agent]) 隨機(jī)pick數(shù)組中一個(gè)就可以了,這是我的一種方式。

python作為一個(gè)擁有眾多第三方包的語(yǔ)言,自然就有可以生成隨機(jī)請(qǐng)求頭的包咯,沒(méi)錯(cuò),就是fake-useragent 這個(gè)第三方庫(kù)了,稍后我們介紹一下這個(gè)函數(shù)庫(kù)的簡(jiǎn)單使用。

既然別人可以寫(xiě)第三方庫(kù),自然自己也可以實(shí)現(xiàn)一個(gè)這樣的功能,大部分情況下,我很多代碼都是直接調(diào)用我自己實(shí)現(xiàn)的一個(gè)GetUserAgentCS 類(lèi),直接就可以獲取一個(gè)隨機(jī)請(qǐng)求頭了,直接寫(xiě)函數(shù)庫(kù),才牛舒服, 這個(gè)我也會(huì)在下面介紹如何編寫(xiě)函數(shù)庫(kù)。

自己編寫(xiě)第三方庫(kù):

不知道你們寫(xiě)代碼的框架是怎樣的,面向過(guò)程還是面向?qū)ο螅?對(duì)于一次性的代碼,就簡(jiǎn)單的編碼就行了,如果你覺(jué)得這個(gè)代碼它可以會(huì)在很多的地方用得到,可以重復(fù)使用,那么你就可以使用類(lèi)的方式,去編寫(xiě)這個(gè)代碼,那么在其他的文件中,你就可以直接調(diào)用你的寫(xiě)這個(gè)文件,直接調(diào)用你寫(xiě)的class類(lèi)中的各種方法,而我也是這樣實(shí)現(xiàn)的一個(gè)隨機(jī)請(qǐng)求頭的一個(gè)第三方庫(kù), 如下:

import random
import csv
class GetUserAgentCS(object):
  """
  調(diào)用本地請(qǐng)求頭文件, 返回請(qǐng)求頭
  """

  def __init__(self):
    with open('D://pyth//scrapy 項(xiàng)目//setting//useragent.csv', 'r') as fr:
      fr_csv = csv.reader(fr)
      self.user_agent = [str(i[1]) for i in fr_csv]

  def get_user(self):
    return random.choice(self.user_agent)

useragent文件如下:

1,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36"
2,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36"
3,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (X11; NetBSD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"
4,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"
5,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36"
-------
------- # too much 
100...

代碼很簡(jiǎn)單的,讀取本地的csv文件,然后random一個(gè)出去就行了,那現(xiàn)在就有人問(wèn)我,你這個(gè)文件怎么來(lái)的, 很簡(jiǎn)單啊,自然就有方法了,待會(huì)在下一個(gè)模塊我會(huì)講到,在這里,我們只需要編寫(xiě)一個(gè)GetUserAgentCS類(lèi)就可以,代碼可以直接抄我上面的,然后保存為get_useragent.py 就可以了,然后你把這個(gè)包文件放在你自己爬蟲(chóng)文件夾的地方,然后這樣調(diào)用:

from get_useragent import GetUserAgentCS
headers = {}
ua = GetUserAgentCS().get_user()
headers['user-agent'] = ua
return headers

如果你在這個(gè)調(diào)用GetUserAgentCS 不成功, 或者底下會(huì)出現(xiàn)紅色的波浪線, 那么就是你沒(méi)有設(shè)置當(dāng)前工作環(huán)境,你只需要這么設(shè)置(設(shè)置你的爬蟲(chóng)文件夾):

在這里插入圖片描述

你需要點(diǎn)擊 Sources Root 就可以了!

使用第三方庫(kù) fake-useragent:

這是一個(gè)別人已經(jīng)寫(xiě)好的第三方庫(kù),你需要安裝然后調(diào)用API 就可以了, 它可以獲取各種的請(qǐng)求頭,唯一的缺點(diǎn)就是 請(qǐng)求不穩(wěn)定,有的時(shí)候網(wǎng)絡(luò)波動(dòng)就可能導(dǎo)致獲取不成功,用于Scrapy中,不是很舒服,所以我在這個(gè)包的基礎(chǔ)上,編寫(xiě)了如上我自己的包,至于請(qǐng)求頭的數(shù)據(jù)怎么來(lái)的, 就是在這個(gè)包運(yùn)行正常時(shí)候,一直更改user-agent,然后不斷的請(qǐng)求 http://httpbin.org/user-agent 然后不斷的保存數(shù)據(jù),寫(xiě)入本地文件就可以了。

我們還是講一講這個(gè)包的使用方式吧!

安裝

pip install fake-useragent

你可以 pip list 查看一下 是否安裝成功

使用方式

from fake_useragent import UserAgent
headers= {'User-Agent':str(UserAgent().random)}
r = requests.get(url, headers=headers)
  • UserAgent().random 可以獲取任意瀏覽器的請(qǐng)求頭
  • UserAgent().Chrome 可以獲取谷歌瀏覽器的請(qǐng)求頭
  • UserAgent().firefox 可以獲取火狐瀏覽器的請(qǐng)求頭

這個(gè)時(shí)候,直接用random就可以了,簡(jiǎn)單。

讀取內(nèi)存數(shù)組:

這個(gè)時(shí)候就有很多人說(shuō), 我就換個(gè)請(qǐng)求頭而已,需要這么麻煩嗎? 當(dāng)然,自然有簡(jiǎn)單的方式,只不過(guò)每次都需要復(fù)制來(lái)用,不是很方法,具體如下:

ua = ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36"
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36"
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (X11; NetBSD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"]

預(yù)先把請(qǐng)求頭放入數(shù)組里面,然后用就可以了。

import random
ua = [.....]
r = requests.get(url, headers={"user-agent":random.choice(ua)})

以上就是我關(guān)于請(qǐng)求頭的幾種設(shè)置方式了,有需要補(bǔ)充的可以評(píng)論區(qū)留言。

教你用三種方式設(shè)置隨機(jī)請(qǐng)求頭, 爬蟲(chóng)設(shè)置請(qǐng)求頭(user-agent)是必然的,那如何生成一個(gè)隨機(jī)請(qǐng)求頭這個(gè)也是我們爬蟲(chóng)必須掌握的, 讀完本篇文章你就可以輕松掌握 !

到此這篇關(guān)于python實(shí)現(xiàn)三種隨機(jī)請(qǐng)求頭方式的文章就介紹到這了,更多相關(guān)python 隨機(jī)請(qǐng)求頭內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解分布式任務(wù)隊(duì)列Celery使用說(shuō)明

    詳解分布式任務(wù)隊(duì)列Celery使用說(shuō)明

    這篇文章主要介紹了詳解分布式任務(wù)隊(duì)列Celery使用說(shuō)明,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • Python利用Charles 實(shí)現(xiàn)全部自動(dòng)答題思路流程分析

    Python利用Charles 實(shí)現(xiàn)全部自動(dòng)答題思路流程分析

    這篇文章主要介紹了Python利用Charles 實(shí)現(xiàn)全部自動(dòng)答題思路流程分析,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • python相似模塊用例

    python相似模塊用例

    這篇文章主要為大家詳細(xì)介紹了python相似模塊用例,感興趣的小伙伴們可以參考一下
    2016-03-03
  • pygame實(shí)現(xiàn)彈球游戲

    pygame實(shí)現(xiàn)彈球游戲

    這篇文章主要為大家詳細(xì)介紹了pygame實(shí)現(xiàn)彈球游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Python網(wǎng)絡(luò)編程之HTTP客戶(hù)端模塊urllib與urllib3

    Python網(wǎng)絡(luò)編程之HTTP客戶(hù)端模塊urllib與urllib3

    這篇文章介紹了Python網(wǎng)絡(luò)編程之HTTP客戶(hù)端模塊urllib與urllib3,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • 一文帶你手撕Python之散列類(lèi)型

    一文帶你手撕Python之散列類(lèi)型

    這篇文章主要介紹了Python字典的定義、操作方法和集合的基本概念,字典以鍵值對(duì)形式存儲(chǔ)數(shù)據(jù),可通過(guò)鍵訪問(wèn)值,操作包括增刪改查等,集合是無(wú)序不重復(fù)的數(shù)據(jù)結(jié)構(gòu),適用于去重和集合運(yùn)算,需要的朋友可以參考下
    2024-09-09
  • python包管理工具pip全面解析

    python包管理工具pip全面解析

    這篇文章主要為大家介紹了python包管理工具pip的全面解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • python源碼剖析之PyObject詳解

    python源碼剖析之PyObject詳解

    Python實(shí)現(xiàn)了完全的面向?qū)ο蟮恼Z(yǔ)言特性,所有的類(lèi)均繼承自object基類(lèi),對(duì)應(yīng)著實(shí)現(xiàn)層面的PyObject.為了實(shí)現(xiàn)多態(tài)的特性,Python的實(shí)現(xiàn)過(guò)程維護(hù)了一個(gè)類(lèi)型對(duì)象系統(tǒng),用來(lái)記錄類(lèi)型信息和維護(hù)類(lèi)的函數(shù)成員,本文為大家詳細(xì)介紹了PyObject,需要的朋友可以參考下
    2021-05-05
  • python連接sql?server數(shù)據(jù)庫(kù)的方法實(shí)戰(zhàn)

    python連接sql?server數(shù)據(jù)庫(kù)的方法實(shí)戰(zhàn)

    當(dāng)我們用Python來(lái)編寫(xiě)網(wǎng)站,必須要能夠通過(guò)python操作數(shù)據(jù)庫(kù),下面這篇文章主要給大家介紹了關(guān)于python連接sql?server數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 解決json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)錯(cuò)誤

    解決json.decoder.JSONDecodeError: Expecting value:&n

    這篇文章主要介紹了解決json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)錯(cuò)誤,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04

最新評(píng)論

新竹市| 小金县| 禹城市| 兴国县| 枣强县| 柳林县| 综艺| 云阳县| 五原县| 南宁市| 综艺| 莱州市| 西平县| 沈阳市| 九龙县| 白河县| 郧西县| 靖西县| 同心县| 临颍县| 梁河县| 新化县| 景宁| 嵊泗县| 昌宁县| 昔阳县| 石门县| 雷州市| 从江县| 英吉沙县| 洪江市| 高安市| 昆山市| 四子王旗| 巴林右旗| 临泽县| 和硕县| 衡山县| 德惠市| 定日县| 莱州市|