大數(shù)據(jù)采集與預(yù)處理課件:模擬登錄和數(shù)據(jù)采集綜合案例 -2_第1頁
大數(shù)據(jù)采集與預(yù)處理課件:模擬登錄和數(shù)據(jù)采集綜合案例 -2_第2頁
大數(shù)據(jù)采集與預(yù)處理課件:模擬登錄和數(shù)據(jù)采集綜合案例 -2_第3頁
大數(shù)據(jù)采集與預(yù)處理課件:模擬登錄和數(shù)據(jù)采集綜合案例 -2_第4頁
大數(shù)據(jù)采集與預(yù)處理課件:模擬登錄和數(shù)據(jù)采集綜合案例 -2_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論