亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在python中利用Selenium+Requests爬取數據

發布時間:2021-05-07 14:51:53 來源:億速云 閱讀:280 作者:Leah 欄目:開發技術

本篇文章給大家分享的是有關怎么在python中利用Selenium+Requests爬取數據,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

python的數據類型有哪些?

python的數據類型:1. 數字類型,包括int(整型)、long(長整型)和float(浮點型)。2.字符串,分別是str類型和unicode類型。3.布爾型,Python布爾類型也是用于邏輯運算,有兩個值:True(真)和False(假)。4.列表,列表是Python中使用最頻繁的數據類型,集合中可以放任何數據類型。5. 元組,元組用”()”標識,內部元素用逗號隔開。6. 字典,字典是一種鍵值對的集合。7. 集合,集合是一個無序的、不重復的數據組合。

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

怎么在python中利用Selenium+Requests爬取數據

觀察其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和頁數

三、獲取所有城市和頁數

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

怎么在python中利用Selenium+Requests爬取數據
怎么在python中利用Selenium+Requests爬取數據

我們為了獲取全站數據,必然離不開的有兩個參數 一個是城市一個是頁數,所以我們利用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 "驗證系統" 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 "驗證系統" 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("操作頻繁,已被發現 當前為第%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

以上就是怎么在python中利用Selenium+Requests爬取數據,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

英吉沙县| 吉林省| 西青区| 稷山县| 额敏县| 广州市| 永安市| 油尖旺区| 延津县| 白水县| 阳新县| 东乡族自治县| 华宁县| 宜兴市| 河南省| 揭阳市| 昭通市| 田东县| 喜德县| 张家界市| 九龙坡区| 大理市| 漯河市| 涟源市| 蒙阴县| 将乐县| 宁河县| 马龙县| 津市市| 大石桥市| 苏州市| 临洮县| 恩施市| 靖宇县| 合作市| 亳州市| 本溪| 丰城市| 灵台县| 文水县| 汉川市|