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

python爬蟲之利用Selenium+Requests爬取拉勾網

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

一、前言

利用selenium+requests訪問頁面爬取拉勾網招聘信息

二、分析url

觀察頁面可知,頁面數據屬于動態(tài)加載 所以現在我們通過抓包工具,獲取數據包

在這里插入圖片描述

觀察其url和參數

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

所以我們要想實現全站爬取,需要有city和頁數

三、獲取所有城市和頁數

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

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

我們?yōu)榱双@取全站數據,必然離不開的有兩個參數 一個是城市一個是頁數,所以我們利用selenium自動化去獲取所有城市和對應頁數

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("開始獲取城市及其最大頁數")
    if "驗證系統(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 "驗證系統(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參數

我們有了每個城市對應的最大頁數,就可以生成訪問頁面所需的參數

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

五、獲取數據

最后我們可以通過添加請求頭和使用params url來訪問頁面獲取數據

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ā)現 當前為第%d個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

六、總結

盡管數據只顯示前30頁,但數據還是未完全獲取

在利用selenium獲取城市最大頁數時 應手動登錄拉勾網,并且其在訪問過程中可能會出現驗證系統(tǒng)需要驗證

利用requests訪問頁面獲取數據時 盡量sleep時間長一點,操作頻繁會封IP

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

相關文章

  • 關于PyQt5主窗口圖標顯示問題匯總

    關于PyQt5主窗口圖標顯示問題匯總

    這篇文章主要介紹了關于PyQt5主窗口圖標顯示問題匯總,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • python圖片由RGB空間轉成LAB空間的實現方式

    python圖片由RGB空間轉成LAB空間的實現方式

    這篇文章主要介紹了python圖片由RGB空間轉成LAB空間的實現方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Python圖像處理庫PIL詳細使用說明

    Python圖像處理庫PIL詳細使用說明

    Pillow是Python中較為基礎的圖像處理庫,主要用于圖像的基本處理,比如裁剪圖像、調整圖像大小和圖像顏色處理等,需要的朋友可以參考下
    2022-04-04
  • python制作填詞游戲步驟詳解

    python制作填詞游戲步驟詳解

    在本文里我們給大家整理了關于python制作填詞游戲的具體步驟以及實例代碼,需要的朋友們跟著學習下。
    2019-05-05
  • Centos 升級到python3后pip 無法使用的解決方法

    Centos 升級到python3后pip 無法使用的解決方法

    今天小編就為大家分享一篇Centos 升級到python3后pip 無法使用的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • django上傳圖片并生成縮略圖方法示例

    django上傳圖片并生成縮略圖方法示例

    這篇文章主要介紹了django上傳圖片并生成縮略圖方法示例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • 基于Python實現簡易的動漫圖片轉換器

    基于Python實現簡易的動漫圖片轉換器

    本文旨在利用Python語言制作一個將普通照片轉換成動漫圖片的小工具,其中使用opencv的非標準庫實現對圖片完成轉換,感興趣的可以嘗試一下
    2022-08-08
  • pytest+request框架中yaml配置文件使用

    pytest+request框架中yaml配置文件使用

    pytest+request框架寫接口測試自動化,使用yaml文件配置更方便管理用例中的數據,本文主要介紹了pytest+request框架中yaml配置文件使用,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • Python 線性回歸分析以及評價指標詳解

    Python 線性回歸分析以及評價指標詳解

    這篇文章主要介紹了Python 線性回歸分析以及評價指標詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 利用Python畫ROC曲線和AUC值計算

    利用Python畫ROC曲線和AUC值計算

    這篇文章給大家介紹了如何利用Python畫ROC曲線,以及AUC值的計算,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-09-09

最新評論