婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > python爬蟲(chóng)之利用Selenium+Requests爬取拉勾網(wǎng)

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

熱門(mén)標(biāo)簽:地圖標(biāo)注微信發(fā)送位置不顯示 蓋州市地圖標(biāo)注 地圖標(biāo)注的意義點(diǎn) 南京銷(xiāo)售外呼系統(tǒng)軟件 浙江電銷(xiāo)卡外呼系統(tǒng)好用嗎 房產(chǎn)電銷(xiāo)外呼系統(tǒng) 315電話機(jī)器人廣告 上海機(jī)器人外呼系統(tǒng)哪家好 地圖制圖標(biāo)注位置改變是移位嗎

一、前言

利用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=defaultneedAddtionalResult=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ù)

我們打開(kāi)拉勾網(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ù),必然離不開(kāi)的有兩個(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=%spx=defaultcompanyNum=0isCompanySelected=falselabelWords="%(self.keyword)
    self.bro.get(url=url)
    sleep(30)
    print("開(kāi)始獲取城市及其最大頁(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=truesuginput=',
        '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爬蟲(chóng)之利用Selenium+Requests爬取拉勾網(wǎng)的文章就介紹到這了,更多相關(guān)Selenium+Requests爬取拉勾網(wǎng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python selenium模擬網(wǎng)頁(yè)點(diǎn)擊爬蟲(chóng)交管12123違章數(shù)據(jù)
  • python爬蟲(chóng)selenium模塊詳解
  • python實(shí)現(xiàn)selenium網(wǎng)絡(luò)爬蟲(chóng)的方法小結(jié)
  • python爬蟲(chóng)利用selenium實(shí)現(xiàn)自動(dòng)翻頁(yè)爬取某魚(yú)數(shù)據(jù)的思路詳解
  • Python爬蟲(chóng)之Selenium實(shí)現(xiàn)關(guān)閉瀏覽器
  • Python爬蟲(chóng)中Selenium實(shí)現(xiàn)文件上傳
  • Python爬蟲(chóng)之Selenium下拉框處理的實(shí)現(xiàn)
  • 教你如何使用Python selenium

標(biāo)簽:貴州 赤峰 臨汾 陽(yáng)泉 雙鴨山 克拉瑪依 金華 日照

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python爬蟲(chóng)之利用Selenium+Requests爬取拉勾網(wǎng)》,本文關(guān)鍵詞  python,爬蟲(chóng),之,利用,Selenium+Requests,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python爬蟲(chóng)之利用Selenium+Requests爬取拉勾網(wǎng)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于python爬蟲(chóng)之利用Selenium+Requests爬取拉勾網(wǎng)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 义乌市| 天祝| 新余市| 建德市| 道孚县| 南宁市| 岑溪市| 吴江市| 富蕴县| 海门市| 新化县| 华池县| 普定县| 镇赉县| 温泉县| 农安县| 长沙市| 嵊泗县| 顺平县| 正镶白旗| 襄樊市| 湘潭县| 永寿县| 武宁县| 原平市| 共和县| 高邑县| 新宾| 金川县| 阿勒泰市| 高雄县| 浦县| 临颍县| 曲靖市| 中江县| 绿春县| 贺州市| 甘南县| 赫章县| 永丰县| 阿拉善盟|