Menu
快讀
  • 旅遊
  • 生活
    • 美食
    • 寵物
    • 養生
    • 親子
  • 娛樂
    • 動漫
  • 時尚
  • 社會
  • 探索
  • 故事
  • 科技
  • 軍事
  • 国际
快讀

爬蟲神器之PyQuery實用教程(二),50行代碼爬取窮遊網

2021 年 3 月 11 日 东哥谈电影

前言

上篇文章 PyQuery (一) 回顧。今天來介紹具體 PyQuery 的使用方法。

窮遊網目標與分析

開始之前,按照之前的套路一步步來。

一、先確立目標。

我們要爬取的目標是:

  1. 日本的城市
  2. 去過的人數
  3. 城市的詳情景點

二、看源碼,分析元素節點。

F12 查看當前網頁源代碼:

https://place.qyer.com/japan/citylist-0-0-1/

選中下圖區域,可以看到這是一個 ul 標簽,class 爲 plcCitylist 。

  • ul:unordered list,“無序列表”的意思。

爬蟲神器之PyQuery實用教程(二),50行代碼爬取窮遊網

在這個無序標簽裏,有許多 li 標簽,class 爲 item+數字。

  • li:list item,“列表項”的意思。

爬蟲神器之PyQuery實用教程(二),50行代碼爬取窮遊網

城市名字:包含在 a 標簽中。

去過的人數:包含在 h3 標簽中,且在 p 標簽中,class 爲 beenton 中。

詳情景點:包含在 h3 標簽中,且在 p 標簽中,class 爲 pois 中,且在 a 標簽中。

  • h3:給文本增加主標題的語義。(顯示在頁面上標題變粗)
  • p:段落標簽

以上分析完了,其實單純分析節點很簡單。重點在于代碼如何使用。

PyQuery代碼詳講

依然是分步驟來提取我們想要的。

回憶一下,用 PyQuery 請求到源代碼,拿到實例對象。

from pyquery import PyQuery as pq doc = pq(‘https://place.qyer.com/japan/citylist-0-0-1’)

1. css選擇器,提取外層 ul

ul_city = doc(‘.plcCitylist’)

基于 css 選擇器,獲取 class=”plcCitylist” 的 ul 節點元素。因爲 class 值唯一,上面說過了。

在 JQuery 的語法中, . 代表著類選擇器的寫法,而 # 代表著 id 選擇器的寫法。所以直接用 .值 ,直接可以獲取當前標簽元素節點,如下:

爬蟲神器之PyQuery實用教程(二),50行代碼爬取窮遊網

當然,如果當標簽不唯一時,你也可以這樣操作,在.前面聲明具體標簽:

ul_city = doc(‘ul.plcCitylist’)

爬蟲神器之PyQuery實用教程(二),50行代碼爬取窮遊網

但需要注意的是,盡管我們 print 打印是你看到的文字,它們實際上並不是 str 類型的字符串,而是 PyQuery 這個類型。

3. 遍曆單獨的 li 元素節點

當我們獲取 ul 下面的 li 元素節點時,匹配到的肯定是多個。此時想要逐個解析 li ,並且獲取到 li 中的城市名稱等抓取信息如何做呢?

for li in lis.items():

通過調用 PyQuery 對象的 items 方法,即可逐層遍曆相同元素,就像我們的 list 一樣。

4. 標簽多個 class 確定唯一值的選擇器寫法

仔細看我們 li 節點中的 h3 標簽,class 裏面是有兩個值的。

<h3 class = “title fontYaHei”>………….

通過這兩個值的唯一性,我們可以直接定位到 h3 元素。

h3 = li(‘.title.fontYaHei’)

5. PyQuery 屬性選擇節點

如果你用不慣以上的所有獲取節點元素的方法, PyQuery 還提供了一個便利的方法,即通過標簽元素的屬性進行定位元素。

a_city = h3(‘a’).attr(‘data-bn-ipg’, ‘place-citylist-mix-name-1’)

h3(‘a’) 獲取的是 h3 標簽裏 a 標簽的元素節點。 使用 .attr 時,後面兩個參數說明 a 標簽原本的屬性由如下組成:

<a data-bn-ipg = “place-citylist-mix-name-1”>………….

attr 第一個參數是標簽屬性的名字,第二個參數則是屬性具體的值。

爬蟲神器之PyQuery實用教程(二),50行代碼爬取窮遊網

成果展示

最終的成果展示如下:

爬蟲神器之PyQuery實用教程(二),50行代碼爬取窮遊網

爬蟲神器之PyQuery實用教程(二),50行代碼爬取窮遊網

選成文本,完成即可,自己就換行顯示了。

相關文章:

  • 紅點優選有你一面限時活動買二送一,冷面麻辣燙等美味上新
  • 紅點優選有你一面限時活動,冷面麻辣燙等美味上新
  • 躺飛 | 你向往的新加坡航空就此拿下
  • 新加坡低齡留學簡明攻略(英倫雲小學)
  • 汽車搖號該不該取消?民生層面和宏觀層面是這樣的,評論亮了
  • 中國護照免簽國家大全
體育

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

©2026 快讀 | 服務協議 | DMCA | 聯繫我們