久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    談談爬蟲中定位元素的常見方法

     liqualife 2019-11-02

     閱讀文本大概需要 3 分鐘。

    前言

    我們知道,不管是爬蟲還是自動化測試,元素定位是最基本而且必須的一個步驟。今天我們就來講講怎么定位元素。

    爬蟲中定位元素

    爬蟲中怎么定位元素呢?常見的有以下幾種:

    • BeautifulSoup find 定位

    • BeautifulSoup css 定位

    BeautifulSoup 是一個可以從 HTML 或 XML 文件中提取數據的 Python 庫,我們需要安裝并導入這個庫。

    from bs4 import BeautifulSoup

    我們再把我們提取的 html 數據轉換成 lxml 格式,方便 BeautifulSoup 庫直接提取信息。

    import requests
    html = requests.get('ttps://www.pyzhishiquan.com/crawler')
    soup = BeautifulSoup(html, 'lxml')

    BeautifulSoup find查找元素

    接下來我們就可以用 find 方法來查找元素了,比如查看所有 a 標簽元素。

    soup.find_all('a')

    BeautifulSoup css 選擇器定位元素

    BeautifulSoup 中我們也可以通過 css 選擇器查找定位元素,導包和格式轉換和上面一樣,格式如下。

    soup.select('xxx')

    select 方法中的字符串參數怎么獲取呢,以 Chrome 瀏覽器為例,F12 檢查元素中右鍵復制 seletor 就可以了。


    我以前寫的很多爬蟲項目的文章都用過這種定位方法,比如 爬蟲喜馬拉雅音頻 文章中提取音頻文件信息。


     爬取上海房租信息 文章中用 css 選擇器提取租房房源的信息。

    當然,在源代碼中無法獲取的元素的 Ajax 動態(tài)加載的頁面,上面的定位方法就不管用了,我們可以通過分析 Network 中的請求,找到你需要提取的信息的規(guī)律,這個內容本文不做講解。
    還有一種方法是通過 selenium 庫來解決,selenium 庫是模擬人工操作瀏覽器的,優(yōu)點可見即可爬,就是只要他能看到的都能獲取信息爬取下來。

    selenium 定位

    selenium 庫定位元素有方法很多,今天分享下常見的的定位方法。

    我們首先需要導入 selenium 庫,通過 webdriver 啟動 Chrome 瀏覽器。

    from selenium import webdriver
    driver = webdriver.Chrome()

    ID 定位

    ID 一般在頁面元素中是唯一的,可以準確定位頁面元素。

    driver.find_element_by_id('id')

    有些頁面元素的 id 是每次刷新頁面都不一樣的,比如 163 郵箱的用戶名輸入框 id,每次刷新頁面,這個 id 都會變。所以,對于這種每次不一樣的 id,我們都不能用 id 來定位了。

    這種隨機 id 的元素我們就通過其他屬性來定位或者通過父元素來找到子元素。

    classname 定位

    如果 classname 是唯一的話,我們就可以通過 classname 來定位元素。

    driver.find_element_by_id('classname')

    Xpath 定位

    Xpath 路徑獲取方法第一個方法和剛才獲取 selector 信息一樣,直接 copy。


    第二個方法可以借助插件,Chrome 瀏覽器上的 Xpath Helper 插件和火狐插件 firepath,以 Xpath Helper 為例,打開后按住 Shift 鍵,移動到想定位的元素,左邊就會顯示 Xpath 路徑。


    這種方法缺點也很明顯,XPath 都是從根路徑開始的,導致 XPath 過長,不利于維護。

    雙屬性定位

    對于一個屬性不是唯一的,我們可以用 Xpath 的雙屬性來定位元素,這個方法對于定位網頁和 APP 都適用。

    上圖是網易云 APP,我想定位簽到按鈕,我可以通過 class 屬性和 text 屬性同時定位元素。

    driver.find_element_by_xpath('//*[@class='android.widget.TextView' and @text='簽到']')

    這種方法適用于很多元素共用同一個屬性的情況,經過我們的組合,就把元素唯一化了。

    網頁元素同樣也可以用雙元素來定位,方法是一樣的。

    以上是 pk 哥平時常用的定位元素的方法,如有其他好的定位方法,歡迎大家留言討論,共同進步。

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發(fā)表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 亚洲av日韩av永久无码电影| 午夜毛片不卡免费观看视频| 亚洲AV无码专区国产乱码电影| 四虎成人在线观看免费| 日韩丝袜欧美人妻制服| 午夜精品久久久久成人| 国产成人一区二区三区免费| 亚洲AV天天做在线观看| 国产亚洲精品AA片在线爽| 人妻少妇精品久久久久久| 桃花岛亚洲成在人线AV| 午夜天堂精品久久久久| 国内永久福利在线视频图片| 亚洲AV永久无码精品一福利| 97午夜理论电影影院| 亚洲成A人一区二区三区| 天天拍夜夜添久久精品大| 狠狠做五月深爱婷婷天天综合| 亚洲天堂在线观看完整版| 国产一区二区三区美女| 国产色视频网站免费| 人妻日韩人妻中文字幕| 国产精品久久久久AV| 中文亚洲成A人片在线观看| 亚洲综合色AAA成人无码| 国产SM重味一区二区三区| 国色天香成人一区二区| 成人无码小视频在线观看| 欧美日韩一区二区综合| 377P欧洲日本亚洲大胆| 国产精品成人久久电影| 国产精品无码一区二区三区电影 | 巨胸美乳无码人妻视频漫画| 国产丝袜视频一区二区三区| 国产一区二区三区日韩精品| 国产午夜亚洲精品福利| 中文文字幕文字幕亚洲色| 免费无码又爽又刺激高潮| 翘臀少妇被扒开屁股日出水爆乳| 国产精品区一区第一页| 婷婷综合久久中文字幕蜜桃三电影|