爬蟲應用示例--puppeteer數據抓取的實現方法(續2)

本文是“爬蟲應用示例--puppeteer數據抓取的實現方法(續1)”的后續,主要講解了常用的幾個自動化操作實現方法。

1、打開瀏覽器

await puppeteer.launch({
? ? ?ignoreHTTPSErrors:true,? //是否在導航期間忽略 HTTPS 錯誤. 默認是?false
? ? ? headless:false,? ?// 是否以無頭模式運行瀏覽器,默認是?true
? ? ? slowMo:250,? // 將 Puppeteer 操作減少指定的毫秒數。這樣你就可以看清發生了什么。在開發階段使用此屬性,在生產階段,注銷此屬性,這樣可以提高軟件的執行效率
? ? ? timeout:0? ?// 等待瀏覽器實例啟動的最長時間(以毫秒為單位),0是禁止超時
?})

以上語句實際上是創建一個瀏覽器的實例,一般配置以上4個參數足夠了,具體如果還需要指定更多的創建方式,可以參見這里。

如果希望異步操作,則可以去掉await。

2、自動打開指定網頁

創建瀏覽器實例實際上是一個promise,成功后才可以執行自動打開指定網頁等以下命令。

await puppeteer.launch({
。。。。。。
}).then(async browser => {
。。。。。
? ? ?let page = await browser.newPage();? ? ?//在打開的瀏覽器中新建一個標簽
? ? ?await page.setJavaScriptEnabled(true); //允許js腳本
? ? ?await page.goto("https://www.baidu.com/");? //打開百度首頁
。。。。。
});

3、自動填寫輸入框

const obj_input = await page.$("#txtCompanyName");? ? //找到id=txtCompanyName的input輸入框
await obj_ input .focus();? ? ? ? ? ? //使該輸入框獲得焦點
await page.keyboard.type("華為");? ?//自動在該輸入框內填寫華為兩個字

以上是根據id定位輸入框的,也可以用坐標、classname等更多方法定位。

4、自動在下拉框中選擇指定項

await page.waitFor('#drpQualificateLevel');? //id= drpQualificateLevel的select組件中數據全部加載完畢
await page.select('#drpQualificateLevel','11');? //自動選擇該select中value=11的選擇項

5、自動點擊指定命令按鈕

let btnSearch = await page.$("#btnSearch");? ? //找到id=btnSearch的命令按鈕
await btnSearch.click();? ? //自動單擊該命令按鈕
await page.waitForNavigation() ; //確保以上單擊事件執行完成,這個語句如果沒有,在單擊命令刷新頁面時,后續獲取數據可能取不到,或者獲取不完整

6、自動提取表格中的數據

await page.waitFor('#dgDwList');? ? //等待id=dgDwList的table中的數據全部加載完畢
let data1 = await page.$$eval('#dgDwList tr', tds => tds.map((tr) => { return tr.innerText.split('\t'); })); //將table中數據全部提取出來放到變量data1中

7、自動點擊指定超級鏈接

let btnNext = await page.$("#btnNext");? ?//定位id= btnNext的超級鏈接<a id='btnNext' .....? />
await btnNext.click();? ?//自動點擊該超級鏈接
await page.waitForNavigation() ;? ?//確保頁面刷新完成

這個命令await page.$eval("#btnNext",obj => obj.href);可以獲取超級鏈接的href值。

8、自動關閉瀏覽器

await browser.close();

puppeteer功能非常強大,以此為基礎實現一個RPA,可以滿足大部分的自動化要求。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容