大數(shù)據(jù)采集與預(yù)處理課件:網(wǎng)站模擬登錄和數(shù)據(jù)采集案例_第1頁
大數(shù)據(jù)采集與預(yù)處理課件:網(wǎng)站模擬登錄和數(shù)據(jù)采集案例_第2頁
大數(shù)據(jù)采集與預(yù)處理課件:網(wǎng)站模擬登錄和數(shù)據(jù)采集案例_第3頁
大數(shù)據(jù)采集與預(yù)處理課件:網(wǎng)站模擬登錄和數(shù)據(jù)采集案例_第4頁
大數(shù)據(jù)采集與預(yù)處理課件:網(wǎng)站模擬登錄和數(shù)據(jù)采集案例_第5頁
已閱讀5頁,還剩45頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

網(wǎng)站模擬登錄和數(shù)據(jù)采集案例 本章學(xué)習(xí)目標(biāo)●分析業(yè)務(wù)網(wǎng)站人才招聘的網(wǎng)頁結(jié)構(gòu)和內(nèi)容●使用selenium和chromedriver實現(xiàn)網(wǎng)站的模擬登錄●使用selenium和chromedriver實現(xiàn)編寫爬蟲代碼獲取指定的靜態(tài)和動態(tài)數(shù)據(jù)●使用pymysql庫實現(xiàn)數(shù)據(jù)的持久化8.1任務(wù)描述本綜合案例通過CHROME瀏覽器綜合分析業(yè)務(wù)網(wǎng)站的網(wǎng)頁結(jié)構(gòu)和內(nèi)容,找到該網(wǎng)站的登錄入口,在提前注冊的前提下,使用selenium和chromedriver實現(xiàn)網(wǎng)站的可視化模擬登錄操作。然后,通過進一步地分析登錄之后的用戶主頁,使用requests庫和lxml庫編寫和解析自定義的爬蟲代碼獲取字段為:公司名稱(comname)、地址(address)、行業(yè)名稱(industry_name)、工資(salary)、崗位名稱(post_name)的靜態(tài)和動態(tài)數(shù)據(jù)。最后,使用pymysql庫在MYSQL數(shù)據(jù)庫管理系統(tǒng)中創(chuàng)建指定的數(shù)據(jù)庫test和數(shù)據(jù)表zhitong和zhitong1,實現(xiàn)數(shù)據(jù)的持久化存儲。8.2頁面分析該爬蟲綜合案例第一次使用的URL將是這個擁有“求職者登錄/注冊”的頁面。這里不僅是任務(wù)中要求的模擬登錄的起點,也是爬蟲開始爬取該網(wǎng)站的起點和入口。案件一:某航空公司數(shù)據(jù)被境外間諜情報機關(guān)網(wǎng)絡(luò)攻擊竊取案2020年1月,某航空公司向國家安全機關(guān)報告,該公司信息系統(tǒng)出現(xiàn)異常,懷疑遭到網(wǎng)絡(luò)攻擊。國家安全機關(guān)立即進行技術(shù)檢查,確認相關(guān)信息系統(tǒng)遭到網(wǎng)絡(luò)武器攻擊,多臺重要服務(wù)器和網(wǎng)絡(luò)設(shè)備被植入特種木馬程序,部分乘客出行記錄等數(shù)據(jù)被竊取。使用鼠標(biāo)右鍵單擊“登錄”控件之后,將出現(xiàn)如下菜單選項,如圖所示。通過使用鼠標(biāo)左鍵單擊該菜單選項中的“檢查”選項,Chrome瀏覽器呈現(xiàn)自帶的“開發(fā)者工具”,并將焦點指向該“求職者登錄/注冊”控件所在的具體的HTML頁面結(jié)構(gòu)當(dāng)中。這里的目的是為了獲取該“求職者登錄/注冊”控件所屬的標(biāo)簽在頁面內(nèi)容中的class屬性值“l(fā)ogin-per-dialog”,使用鼠標(biāo)右鍵單擊“登錄”控件之后,將出現(xiàn)如下菜單選項,如圖所示。通過使用鼠標(biāo)左鍵單擊該菜單選項中的“檢查”選項,Chrome瀏覽器呈現(xiàn)自帶的“開發(fā)者工具”,并將焦點指向該“求職者登錄/注冊”控件所在的具體的HTML頁面結(jié)構(gòu)當(dāng)中。這里的目的是為了獲取該“求職者登錄/注冊”控件所屬的標(biāo)簽在頁面內(nèi)容中的class屬性值“l(fā)ogin-per-dialog”,使用CHROME瀏覽器的“開發(fā)者工具”可以看到該登錄頁面位于一個form表單當(dāng)中在該表單控件中,使用密碼登錄的方式,可以選擇“密碼登錄”控件,標(biāo)簽為<div>,類class=“change-login-type-itemactive”或者XPATH路徑為://*[@id="commonLoginBox"]/div[2]/form/div[1]/div[2]在該表單控件中,可以進一步地觀察到其中包含的多個控件,包括一個type為text,id為login_box_account的<input>標(biāo)簽和一個type為password,id為login_box_password的<input>標(biāo)簽。這兩個標(biāo)簽分別用于獲取用戶輸入的用戶名和密碼在該表單控件中,可以進一步地觀察到其中包含的多個控件,包括一個type為text,id為login_box_account的<input>標(biāo)簽和一個type為password,id為login_box_password的<input>標(biāo)簽。這兩個標(biāo)簽分別用于獲取用戶輸入的用戶名和密碼在該表單控件中還包含一個class為btn-submit的<p>標(biāo)簽。該標(biāo)簽的作用是將表單的數(shù)據(jù)統(tǒng)一向后臺服務(wù)器進行提交,如圖所示。如果用戶填寫的用戶名和密碼正確,該網(wǎng)站將跳轉(zhuǎn)轉(zhuǎn)到指定的頁面。如果失敗,則會提示用戶名或者密碼錯誤。

網(wǎng)站模擬登錄和數(shù)據(jù)采集案例 本章學(xué)習(xí)目標(biāo)●分析業(yè)務(wù)網(wǎng)站人才招聘的網(wǎng)頁結(jié)構(gòu)和內(nèi)容●使用selenium和chromedriver實現(xiàn)網(wǎng)站的模擬登錄●使用selenium和chromedriver實現(xiàn)編寫爬蟲代碼獲取指定的靜態(tài)和動態(tài)數(shù)據(jù)●使用pymysql庫實現(xiàn)數(shù)據(jù)的持久化8.1任務(wù)描述本綜合案例通過CHROME瀏覽器綜合分析業(yè)務(wù)網(wǎng)站的網(wǎng)頁結(jié)構(gòu)和內(nèi)容,找到該網(wǎng)站的登錄入口,在提前注冊的前提下,使用selenium和chromedriver實現(xiàn)網(wǎng)站的可視化模擬登錄操作。然后,通過進一步地分析登錄之后的用戶主頁,使用requests庫和lxml庫編寫和解析自定義的爬蟲代碼獲取字段為:公司名稱(comname)、地址(address)、行業(yè)名稱(industry_name)、工資(salary)、崗位名稱(post_name)的靜態(tài)和動態(tài)數(shù)據(jù)。最后,使用pymysql庫在MYSQL數(shù)據(jù)庫管理系統(tǒng)中創(chuàng)建指定的數(shù)據(jù)庫test和數(shù)據(jù)表zhitong和zhitong1,實現(xiàn)數(shù)據(jù)的持久化存儲。8.2頁面分析該爬蟲綜合案例第一次使用的URL將是這個擁有“求職者登錄/注冊”的頁面。這里不僅是任務(wù)中要求的模擬登錄的起點,也是爬蟲開始爬取該網(wǎng)站的起點和入口。案件一:某航空公司數(shù)據(jù)被境外間諜情報機關(guān)網(wǎng)絡(luò)攻擊竊取案2020年1月,某航空公司向國家安全機關(guān)報告,該公司信息系統(tǒng)出現(xiàn)異常,懷疑遭到網(wǎng)絡(luò)攻擊。國家安全機關(guān)立即進行技術(shù)檢查,確認相關(guān)信息系統(tǒng)遭到網(wǎng)絡(luò)武器攻擊,多臺重要服務(wù)器和網(wǎng)絡(luò)設(shè)備被植入特種木馬程序,部分乘客出行記錄等數(shù)據(jù)被竊取。使用鼠標(biāo)右鍵單擊“登錄”控件之后,將出現(xiàn)如下菜單選項,如圖所示。通過使用鼠標(biāo)左鍵單擊該菜單選項中的“檢查”選項,Chrome瀏覽器呈現(xiàn)自帶的“開發(fā)者工具”,并將焦點指向該“求職者登錄/注冊”控件所在的具體的HTML頁面結(jié)構(gòu)當(dāng)中。這里的目的是為了獲取該“求職者登錄/注冊”控件所屬的標(biāo)簽在頁面內(nèi)容中的class屬性值“l(fā)ogin-per-dialog”,使用鼠標(biāo)右鍵單擊“登錄”控件之后,將出現(xiàn)如下菜單選項,如圖所示。通過使用鼠標(biāo)左鍵單擊該菜單選項中的“檢查”選項,Chrome瀏覽器呈現(xiàn)自帶的“開發(fā)者工具”,并將焦點指向該“求職者登錄/注冊”控件所在的具體的HTML頁面結(jié)構(gòu)當(dāng)中。這里的目的是為了獲取該“求職者登錄/注冊”控件所屬的標(biāo)簽在頁面內(nèi)容中的class屬性值“l(fā)ogin-per-dialog”,使用CHROME瀏覽器的“開發(fā)者工具”可以看到該登錄頁面位于一個form表單當(dāng)中在該表單控件中,使用密碼登錄的方式,可以選擇“密碼登錄”控件,標(biāo)簽為<div>,類class=“change-login-type-itemactive”或者XPATH路徑為://*[@id="commonLoginBox"]/div[2]/form/div[1]/div[2]在該表單控件中,可以進一步地觀察到其中包含的多個控件,包括一個type為text,id為login_box_account的<input>標(biāo)簽和一個type為password,id為login_box_password的<input>標(biāo)簽。這兩個標(biāo)簽分別用于獲取用戶輸入的用戶名和密碼在該表單控件中,可以進一步地觀察到其中包含的多個控件,包括一個type為text,id為login_box_account的<input>標(biāo)簽和一個type為password,id為login_box_password的<input>標(biāo)簽。這兩個標(biāo)簽分別用于獲取用戶輸入的用戶名和密碼在該表單控件中還包含一個class為btn-submit的<p>標(biāo)簽。該標(biāo)簽的作用是將表單的數(shù)據(jù)統(tǒng)一向后臺服務(wù)器進行提交,如圖所示。如果用戶填寫的用戶名和密碼正確,該網(wǎng)站將跳轉(zhuǎn)轉(zhuǎn)到指定的頁面。如果失敗,則會提示用戶名或者密碼錯誤。8.3模擬登錄8.3.1模擬登錄的總體步驟1)導(dǎo)入指定的selenium模塊,分別是webdrivermon.by的By類,webdriver.support.wait的WebDriverWait類和expected_conditions模塊。fromseleniumimportwebdriverfromselenium.webdrivermon.byimportByfromselenium.webdriver.support.waitimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasEC2)使用webdriver的Chrome()初始化用于操作Chrome谷歌瀏覽器的對象,并賦值給chrome_driver。 chrome_driver=webdriver.Chrome()3)使用Chrome谷歌瀏覽器對象chrome_driver的maximize_window()方法將瀏覽器設(shè)置為最大化。 chrome_driver.maximize_window()4)自定義一個方法login_demo(),用于實現(xiàn)模擬登錄的具體業(yè)務(wù)邏輯。login_demo()方法是整個模擬登錄過程的核心代碼。該方法真正實現(xiàn)了模擬手工登錄的過程。因此,需要單獨介紹。8.3模擬登錄8.3.2模擬登錄業(yè)務(wù)邏輯和代碼詳解deflogin_demo():1)使用Chrome谷歌瀏覽器對象chrome_driver的get()方法獲取業(yè)務(wù)網(wǎng)站的URL。chrome_driver.get("http://www.job5156/")2)通過上一步進入業(yè)務(wù)網(wǎng)站之后,找到登錄的超鏈接。使用WebDriverWait類實現(xiàn)使用Chrome谷歌瀏覽器對象chrome_driver對Chrome谷歌瀏覽器的8秒等待操作。其等待的目的是使用until方法將EC的判定條件element_to_be_clickable(等待指定的控件渲染并可以單擊后作為繼續(xù)執(zhí)行的判定條件)作為參數(shù),再通過By.CLASS_NAME找到屬性class的值為“l(fā)ogin-per-dialog”的控件作為參數(shù)傳遞給element_to_be_clickable方法。這樣,就可以等到該登錄超鏈接成功渲染后在對其進行操作。WebDriverWait(chrome_driver,8).until(EC.element_to_be_clickable((By.CLASS_NAME,"login-per-dialog")))3)使用chrome_driver的find_element_by_class_name()方法通過“l(fā)ogin-per-dialog”找到該渲染完畢并可以單擊使用的登錄控件,并將其賦值給login_control。login_control=chrome_driver.find_element_by_class_name("login-per-dialog")4)使用login_control的click()方法實現(xiàn)模擬單擊操作。login_control.click()8.3模擬登錄8.3.2模擬登錄業(yè)務(wù)邏輯和代碼詳解5)需要選擇“密碼登錄”方式。找到“密碼登錄”控件的XPATH路徑。WebDriverWait(chrome_driver,15).until(EC.element_to_be_clickable((By.XPATH,'//*[@id="commonLoginBox"]/div[2]/form/div[1]/div[2]')))login_button_control=chrome_driver.find_element_by_xpath('//*[@id="commonLoginBox"]/div[2]/form/div[1]/div[2]')6)使用login_button_control的click()方法實現(xiàn)模擬單擊操作。login_button_control.click()7)需要通過輸入用戶名和密碼。找到用于輸入用戶名和密碼的控件。這里分別是login_box_account和login_box_password。WebDriverWait(chrome_driver,15).until(EC.element_to_be_clickable((By.ID,"login_box_account"))) id_control=chrome_driver.find_element_by_id("login_box_account")8.3模擬登錄8.3.2模擬登錄業(yè)務(wù)邏輯和代碼詳解8)通過send_keys方法分別實現(xiàn)輸入用戶名和密碼。 id_control.send_keys("用戶名") WebDriverWait(chrome_driver,15).until(EC.element_to_be_clickable((By.ID,"login_box_password"))) pwd_control=chrome_driver.find_element_by_id("login_box_password")pwd_control.send_keys("密碼")9)通過元素標(biāo)簽路徑XPATH找到登錄按鈕,并使用click()方法實現(xiàn)模擬單擊。 WebDriverWait(chrome_driver,15).until(EC.element_to_be_clickable((By.XPATH,'//*[@id="commonLoginBox"]/div[2]/form/p[2]'))) login_button_control=chrome_driver.find_element_by_xpath('//*[@id="commonLoginBox"]/div[2]/form/p[2]') login_button_control.click()

網(wǎng)站模擬登錄和數(shù)據(jù)采集案例 本章學(xué)習(xí)目標(biāo)●分析業(yè)務(wù)網(wǎng)站人才招聘的網(wǎng)頁結(jié)構(gòu)和內(nèi)容●使用selenium和chromedriver實現(xiàn)網(wǎng)站的模擬登錄●使用selenium和chromedriver實現(xiàn)編寫爬蟲代碼獲取指定的靜態(tài)和動態(tài)數(shù)據(jù)●使用pymysql庫實現(xiàn)數(shù)據(jù)的持久化8.4獲取靜態(tài)數(shù)據(jù)在登錄成功之后的頁面中通過頁面分析,找到該網(wǎng)站的搜索功能按鈕,并記錄該控件的屬性或者XPATH路徑,如圖所示。目的是通過該按鈕能夠跳轉(zhuǎn)到指定的搜索頁面。8.4獲取靜態(tài)數(shù)據(jù)使用鼠標(biāo)左鍵單擊該搜索按鈕,頁面將跳轉(zhuǎn)到指定的詳細搜索頁面,如圖8-11所示。認真分析頁面結(jié)構(gòu)和內(nèi)容之后發(fā)現(xiàn),該頁面的URL默認返回如下內(nèi)容:城市站點,福利標(biāo)簽,篩選條件,默認職位信息等主要內(nèi)容。8.4獲取靜態(tài)數(shù)據(jù)在“開發(fā)者工具”的Network欄目下的DOC中可以看到,該默認URL返回的城市站點,福利標(biāo)簽,篩選條件,默認職位信息等主要內(nèi)容數(shù)據(jù)均為靜態(tài)數(shù)據(jù)。8.4獲取靜態(tài)數(shù)據(jù)在“開發(fā)者工具”的Network欄目下的Headers中可以觀察到該默認URL的頭部信息。8.4.1靜態(tài)數(shù)據(jù)獲取的總體步驟1)導(dǎo)入爬蟲代碼需要使用的requests庫用于獲取URL的頁面響應(yīng)數(shù)據(jù),導(dǎo)入lxml庫中的etree用于解析頁面的響應(yīng)數(shù)據(jù),并進一步實現(xiàn)數(shù)據(jù)的精確定位和操作,導(dǎo)入pymysql庫用于持久化保存數(shù)據(jù)。importrequestsfromlxmlimportetreeimportpymysql2)設(shè)置網(wǎng)絡(luò)爬蟲代碼請求該URL的Headers頭部信息。在開發(fā)者工具的“Network”選項卡下的“Headers”選項卡中得到該默認URL的Headers頭部信息。其目的是向業(yè)務(wù)網(wǎng)站的后臺服務(wù)器隱藏爬蟲代碼的真實身份,讓爬蟲代碼帶著這些請求信息偽裝成瀏覽器正常訪問該網(wǎng)站服務(wù)器的狀態(tài),而不被服務(wù)器的反爬措施發(fā)現(xiàn)。headers={'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3','Accept-Encoding':'gzip,deflate','Accept-Language':'zh-CN,zh;q=0.9','User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/74.0.3729.108Safari/537.36'}3)自定義爬蟲方法get_static(cursor)用于獲取指定的URL的靜態(tài)數(shù)據(jù)和數(shù)據(jù)持久化保存。該方法是實現(xiàn)獲取靜態(tài)數(shù)據(jù)的核心方法。因此,需要單獨介紹。8.4.2靜態(tài)數(shù)據(jù)獲取業(yè)務(wù)邏輯和代碼詳解defget_static(cursor):1)聲明變量url用于獲取指定的爬取的URL。這里將業(yè)務(wù)網(wǎng)站的詳細搜索頁面的URL賦值給url。url='.job5156/s/search/?keywordType=&keyword='2)聲明變量response用于獲取requests庫的get方法從上一步指定的url和headers中獲取的頁面響應(yīng)數(shù)據(jù)。response=requests.get(url,headers=headers)3)聲明變量s用于獲取lxml中etree的HTML方法對上一步頁面響應(yīng)數(shù)據(jù)response的解析,其目的是為了接下來對數(shù)據(jù)的精確定位和操作。s=etree.HTML(response.text)8.4.2靜態(tài)數(shù)據(jù)獲取業(yè)務(wù)邏輯和代碼詳解4)聲明變量infos用于獲取變量s的xpath方法返回的指定數(shù)據(jù)。這里需要通過使用“開發(fā)者工具”的Elements功能詳細分析該頁面的標(biāo)簽結(jié)構(gòu)和數(shù)據(jù)內(nèi)容8.4.2靜態(tài)數(shù)據(jù)獲取業(yè)務(wù)邏輯和代碼詳解將鼠標(biāo)定位到“開發(fā)者工具”的Elements欄目中的<ul>標(biāo)簽上面,單擊鼠標(biāo)右鍵,在彈出的下拉式菜單中選擇CopyXpath8.4.2靜態(tài)數(shù)據(jù)獲取業(yè)務(wù)邏輯和代碼詳解5)使用for循環(huán)語句遍歷各個<li>標(biāo)簽以獲取所有<li>標(biāo)簽中的靜態(tài)數(shù)據(jù)

網(wǎng)站模擬登錄和數(shù)據(jù)采集案例 本章學(xué)習(xí)目標(biāo)●分析業(yè)務(wù)網(wǎng)站人才招聘的網(wǎng)頁結(jié)構(gòu)和內(nèi)容●使用selenium和chromedriver實現(xiàn)網(wǎng)站的模擬登錄●使用selenium和chromedriver實現(xiàn)編寫爬蟲代碼獲取指定的靜態(tài)和動態(tài)數(shù)據(jù)●使用pymysql庫實現(xiàn)數(shù)據(jù)的持久化8.5獲取動態(tài)數(shù)據(jù)8.5.1網(wǎng)站模擬登錄和動態(tài)數(shù)據(jù)獲取的總體步驟1)導(dǎo)入爬蟲代碼需要使用的模塊selenium的webdriver用于控制瀏覽器實現(xiàn)網(wǎng)站頁面控件和數(shù)據(jù)的定位和采集。導(dǎo)入pymysql用于實現(xiàn)數(shù)據(jù)持久化保存。2)自定義爬蟲方法login_demo(cursor)實現(xiàn)指定的URL的模擬登錄和動態(tài)數(shù)據(jù)獲取,同時傳入?yún)?shù)cursor用于實現(xiàn)數(shù)據(jù)持久化操作。該方法是實現(xiàn)獲取動態(tài)數(shù)據(jù)核心代碼。因此,需要單獨介紹。8.5獲取動態(tài)數(shù)據(jù)8.5.2動態(tài)數(shù)據(jù)獲取業(yè)務(wù)邏輯和代碼詳解1)調(diào)用webdriver的Chrome()方法初始化針對谷歌瀏覽器的可操作對象chrome_driver。調(diào)用chrome_driver的maximize_window()方法實現(xiàn)瀏覽器最大化操作。調(diào)用chrome_driver的get("http://www.job5156/")方法實現(xiàn)URL訪問。2)經(jīng)過頁面分析,需要獲得完成模擬登錄過程需要按步驟完成頁面指定控件的操作、賬戶和密碼的輸入。3)登錄成功之后,進入網(wǎng)站主界面。點擊搜索欄的“搜索”按鈕,跳轉(zhuǎn)到職位信息詳細頁面。4)使用selenium獲得動態(tài)數(shù)據(jù)和持久化保存。5)編寫程序入口方法,鏈接數(shù)據(jù)庫和建立數(shù)據(jù)表,并運行l(wèi)ogin_demo(cursor)方法。8.6數(shù)據(jù)持久化保存8.6.1數(shù)據(jù)持久化保存1)導(dǎo)入pymysql模塊用于在Python中連接和操作MYSQL數(shù)據(jù)庫管理系統(tǒng)。2)使用pymysql的connect()方法,通過傳入指定的參數(shù)實現(xiàn)對MYSQL數(shù)據(jù)庫管理系統(tǒng)的登錄和具體數(shù)據(jù)庫的連接操作。這里的參數(shù)分別是:host表示將要連接的設(shè)備地址,localhost表示本機。user和password表示登錄到MYSQL數(shù)據(jù)庫管理系統(tǒng)的賬號和密碼。port表示登錄到該數(shù)據(jù)庫管理系統(tǒng)過程中使用的端口號,這里是3306。db表示在該數(shù)據(jù)庫管理系統(tǒng)中已經(jīng)存在的數(shù)據(jù)庫。這里需要先在NavicatPremium中創(chuàng)建該數(shù)據(jù)庫。最后,將該方法的返回值返回給變量db。3)使用cursor()方法是實現(xiàn)對數(shù)據(jù)庫db執(zhí)行SQL操作的基礎(chǔ)。4)聲明變量sql用于接收以字符串形式編寫的SQL語句。該SQL語句的含義是:使用CREATETABLE命令創(chuàng)建一個名為zhitong的數(shù)據(jù)表。該表中包含comname,address,requirement,salary,name,information共六個字段。這六個字段正好用于接收前面對應(yīng)的崗位數(shù)據(jù)信息。5)使用execute()方法實現(xiàn)上面的SQL語句。在test數(shù)據(jù)庫中創(chuàng)建該數(shù)據(jù)表。6)將獲取的靜態(tài)和動態(tài)數(shù)據(jù)導(dǎo)入到MYSQL數(shù)據(jù)庫管理系統(tǒng)的指定數(shù)據(jù)庫中。在get_static(cursor)和login_demo(cursor)中加入變量cursor,目的是為了將前面的cursor=db.cursor()傳遞到這兩個方法中,從而實現(xiàn)cursor的數(shù)據(jù)插入功能。

網(wǎng)站模擬登錄和數(shù)據(jù)采集案例 本章學(xué)習(xí)目標(biāo)●分析業(yè)務(wù)網(wǎng)站人才招聘的網(wǎng)頁結(jié)構(gòu)和內(nèi)容●使用selenium和chromedriver實現(xiàn)網(wǎng)站的模擬登錄●使用selenium和chromedriver實現(xiàn)編寫爬蟲代碼獲取指定的靜態(tài)和動態(tài)數(shù)據(jù)●使用pymysql庫實現(xiàn)數(shù)據(jù)的持久化8.7數(shù)據(jù)預(yù)處理1)導(dǎo)入指定的庫importpandasaspdimportpymysqlfromtabulateimporttabulate2)自定義方法main(),作為實現(xiàn)調(diào)用其他數(shù)據(jù)預(yù)處理自定義方法的入口。defmain():#1數(shù)據(jù)讀取data=read_data()#2探索清理數(shù)據(jù)check_data(data)#3轉(zhuǎn)換數(shù)據(jù)data_new=transform_data(data)#4規(guī)約數(shù)據(jù)defcustom_sampling(group):returngroup.sample(n=1)#采樣每個組內(nèi)的一個樣本result=data_new.groupby(['addr_names','industry_name']).apply(custom_sampling)print(tabulate(result,headers='keys',tablefmt='pretty'))8.7數(shù)據(jù)預(yù)處理3)自定義方法read_data()實現(xiàn)數(shù)據(jù)庫連接操作,并返回DataFrame格式數(shù)據(jù)。defread_data():db=pymysql.connect(host='localhost',user='root',password='12345678',port=3306,db='test')cursor=db.cursor()cursor.execute("SELECT*FROMzhitongdongtai")data=cursor.fetchall()columns=['com_name','salary','addr_names','industry_name']df=pd.DataFrame(list(data),columns=columns)db.close()returndf8.7數(shù)據(jù)預(yù)處理4)自定義方法check_data(data)實現(xiàn)數(shù)據(jù)的清理操作。defread_data():db=pymysql.connect(host='localhost',user='root',password='12345678',port=3306,db='test')cursor=db.cursor()cursor.execute("SELECT*FROMzhitongdongtai")data=cursor.fetchall()columns=['com_name','salary','addr_names','industry_name']df=pd.DataFrame(list(data),columns=columns)db.close()returndf8.7數(shù)據(jù)預(yù)處理5)自定義方法transform_data(data)實現(xiàn)數(shù)據(jù)轉(zhuǎn)換操作。deftransform_data(data):df=data#1轉(zhuǎn)換薪水字段salary_range_pattern=r'(?P<low_salary>\d+\.?\d*)-(?P<high_salary>\d+\.?\d*)K'salary_policy_pattern=r'(?P<salary_policy>\d*薪)?'final_pattern=rf'{sala

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論