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

python爬蟲之利用Selenium+Requests爬取拉勾網(wǎng)

 更新時(shí)間:2021年04月21日 15:47:11   作者:(.+)柳下惠(.+)  
這篇文章主要介紹了python爬蟲之利用Selenium+Requests爬取拉勾網(wǎng),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python爬蟲的小伙伴們有很好的幫助,需要的朋友可以參考下

一、前言

利用selenium+requests訪問(wèn)頁(yè)面爬取拉勾網(wǎng)招聘信息

二、分析url

觀察頁(yè)面可知,頁(yè)面數(shù)據(jù)屬于動(dòng)態(tài)加載 所以現(xiàn)在我們通過(guò)抓包工具,獲取數(shù)據(jù)包

在這里插入圖片描述

觀察其url和參數(shù)

url="https://www.lagou.com/jobs/positionAjax.json?px=default&needAddtionalResult=false"
參數(shù):
city=%E5%8C%97%E4%BA%AC  ==》城市
first=true  ==》無(wú)用
pn=1  ==》頁(yè)數(shù)
kd=%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90  ==》商品關(guān)鍵詞

所以我們要想實(shí)現(xiàn)全站爬取,需要有city和頁(yè)數(shù)

三、獲取所有城市和頁(yè)數(shù)

我們打開拉勾網(wǎng),觀察后發(fā)現(xiàn),他的數(shù)據(jù)并不是完全展示的,比如說(shuō) 在城市篩選選擇全國(guó) 僅僅只顯示30頁(yè) 但總頁(yè)數(shù)是遠(yuǎn)遠(yuǎn)大于30頁(yè)的;我又選擇北京發(fā)現(xiàn)是30頁(yè)又選擇北京下的海淀區(qū)又是30頁(yè),可能我們無(wú)法把數(shù)據(jù)全部的爬取,但我們可以盡可能的將數(shù)據(jù)多的爬取

在這里插入圖片描述
在這里插入圖片描述

我們?yōu)榱双@取全站數(shù)據(jù),必然離不開的有兩個(gè)參數(shù) 一個(gè)是城市一個(gè)是頁(yè)數(shù),所以我們利用selenium自動(dòng)化去獲取所有城市和對(duì)應(yīng)頁(yè)數(shù)

def City_Page(self):
    City_Page={}
    url="https://www.lagou.com/jobs/allCity.html?keyword=%s&px=default&companyNum=0&isCompanySelected=false&labelWords="%(self.keyword)
    self.bro.get(url=url)
    sleep(30)
    print("開始獲取城市及其最大頁(yè)數(shù)")
    if "驗(yàn)證系統(tǒng)" in self.bro.page_source:
        sleep(40)
    html = etree.HTML(self.bro.page_source)
    city_urls = html.xpath('//table[@class="word_list"]//li/input/@value')
    for city_url in city_urls:
        try:
            self.bro.get(city_url)
            if "驗(yàn)證系統(tǒng)" in self.bro.page_source:
                sleep(40)
            city=self.bro.find_element_by_xpath('//a[@class="current_city current"]').text
            page=self.bro.find_element_by_xpath('//span[@class="span totalNum"]').text
            City_Page[city]=page
            sleep(0.5)
        except:
            pass
    self.bro.quit()
    data = json.dumps(City_Page)
    with open("city_page.json", 'w', encoding="utf-8")as f:
        f.write(data)
    return City_Page

四、生成params參數(shù)

我們有了每個(gè)城市對(duì)應(yīng)的最大頁(yè)數(shù),就可以生成訪問(wèn)頁(yè)面所需的參數(shù)

def Params_List(self):
    with open("city_page.json", "r")as f:
        data = json.loads(f.read())
    Params_List = []
    for a, b in zip(data.keys(), data.values()):
        for i in range(1, int(b) + 1):
            params = {
                'city': a,
                'pn': i,
                'kd': self.keyword
            }
            Params_List.append(params)
    return Params_List

五、獲取數(shù)據(jù)

最后我們可以通過(guò)添加請(qǐng)求頭和使用params url來(lái)訪問(wèn)頁(yè)面獲取數(shù)據(jù)

def Parse_Data(self,params):
    url = "https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false"
    header={
        'referer': 'https://www.lagou.com/jobs/list_%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90?labelWords=&fromSearch=true&suginput=',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36',
        'cookie':''
    }
    try:
        text = requests.get(url=url, headers=header, params=params).text
        if "頻繁" in text:
            print("操作頻繁,已被發(fā)現(xiàn) 當(dāng)前為第%d個(gè)params"%(i))
        data=json.loads(text)
        result=data["content"]["positionResult"]["result"]
        for res in result:
            with open(".//lagou1.csv", "a",encoding="utf-8") as f:
                writer = csv.DictWriter(f, res.keys())
                writer.writerow(res)
        sleep(1)
    except Exception as e:
        print(e)
        pass

六、總結(jié)

盡管數(shù)據(jù)只顯示前30頁(yè),但數(shù)據(jù)還是未完全獲取

在利用selenium獲取城市最大頁(yè)數(shù)時(shí) 應(yīng)手動(dòng)登錄拉勾網(wǎng),并且其在訪問(wèn)過(guò)程中可能會(huì)出現(xiàn)驗(yàn)證系統(tǒng)需要驗(yàn)證

利用requests訪問(wèn)頁(yè)面獲取數(shù)據(jù)時(shí) 盡量sleep時(shí)間長(zhǎng)一點(diǎn),操作頻繁會(huì)封IP

到此這篇關(guān)于python爬蟲之利用Selenium+Requests爬取拉勾網(wǎng)的文章就介紹到這了,更多相關(guān)Selenium+Requests爬取拉勾網(wǎng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python3通過(guò)udp實(shí)現(xiàn)組播數(shù)據(jù)的發(fā)送和接收操作

    python3通過(guò)udp實(shí)現(xiàn)組播數(shù)據(jù)的發(fā)送和接收操作

    這篇文章主要介紹了python3通過(guò)udp實(shí)現(xiàn)組播數(shù)據(jù)的發(fā)送和接收操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • python全局解釋器GIL鎖機(jī)制詳解

    python全局解釋器GIL鎖機(jī)制詳解

    我們要知道一點(diǎn)GIL并不是Python的特性,它是Python解釋器Cpython引入的一個(gè)概念,下面這篇文章主要給大家介紹了關(guān)于python全局解釋器GIL鎖機(jī)制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • python屬于軟件嗎

    python屬于軟件嗎

    在本篇內(nèi)容里小編給Python新手整理了關(guān)于python是軟件嗎的相關(guān)知識(shí)點(diǎn),有興趣的朋友們可以閱讀下。
    2020-06-06
  • Python字典 dict幾種遍歷方式

    Python字典 dict幾種遍歷方式

    這篇文章主要給大家分享的是Python字典 dict幾種遍歷方式,文章主要介紹使用 for key in dict遍歷字典、使用for key in dict.keys () 遍歷字典的鍵等內(nèi)容,需要的朋友可以參考一下,希望對(duì)你有所幫助
    2021-11-11
  • 使用 Visual Studio Code(VSCode)搭建簡(jiǎn)單的Python+Django開發(fā)環(huán)境的方法步驟

    使用 Visual Studio Code(VSCode)搭建簡(jiǎn)單的Python+Djan

    這篇文章主要介紹了使用 Visual Studio Code(VSCode)搭建簡(jiǎn)單的Python+Django開發(fā)環(huán)境的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Python中22個(gè)萬(wàn)用公式的小結(jié)

    Python中22個(gè)萬(wàn)用公式的小結(jié)

    在大家的日常python程序的編寫過(guò)程中,都會(huì)有自己解決某個(gè)問(wèn)題的解決辦法,或者是在程序的調(diào)試過(guò)程中,用來(lái)幫助調(diào)試的程序公式,本文總結(jié)了22個(gè)萬(wàn)用公式,感興趣的可以了解一下
    2021-07-07
  • Pytorch參數(shù)注冊(cè)和nn.ModuleList nn.ModuleDict的問(wèn)題

    Pytorch參數(shù)注冊(cè)和nn.ModuleList nn.ModuleDict的問(wèn)題

    這篇文章主要介紹了Pytorch參數(shù)注冊(cè)和nn.ModuleList nn.ModuleDict的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Python隨機(jī)數(shù)模塊詳情

    Python隨機(jī)數(shù)模塊詳情

    這篇文章主要介紹了Python隨機(jī)數(shù)模塊,隨機(jī)數(shù)模塊實(shí)現(xiàn)了各種分布的偽隨機(jī)數(shù)生成器。對(duì)于整數(shù),從范圍中有統(tǒng)一的選擇。 對(duì)于序列,存在隨機(jī)元素的統(tǒng)一選擇、用于生成列表的隨機(jī)排列的函數(shù)、以及用于隨機(jī)抽樣而無(wú)需替換的函數(shù),下文來(lái)看看詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • python調(diào)用百度語(yǔ)音REST API

    python調(diào)用百度語(yǔ)音REST API

    這篇文章主要為大家詳細(xì)介紹了python調(diào)用百度語(yǔ)音REST API,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Python+Django+MySQL實(shí)現(xiàn)基于Web版的增刪改查的示例代碼

    Python+Django+MySQL實(shí)現(xiàn)基于Web版的增刪改查的示例代碼

    這篇文章主要介紹了Python+Django+MySQL實(shí)現(xiàn)基于Web版的增刪改查的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05

最新評(píng)論

绥江县| 仲巴县| 唐海县| 桐梓县| 临江市| 珠海市| 紫阳县| 普兰店市| 孝昌县| 且末县| 莒南县| 民权县| 荥经县| 高雄县| 元朗区| 安国市| 治多县| 华阴市| 宜兰市| 当雄县| 姚安县| 潞西市| 大埔县| 聊城市| 山阴县| 建湖县| 达拉特旗| 阜平县| 元阳县| 剑阁县| 松溪县| 定襄县| 兴业县| 浮山县| 独山县| 枣庄市| 包头市| 图木舒克市| 抚远县| 教育| 明星|