2015-05-09

使用 BeautifulSoup 抓取網頁中的特定內容



程式碼
from bs4 import BeautifulSoup
html_sample = ' '
soup = BeautifulSoup(html_sample)
print soup.text
注意使用

  • 「html_sample = ' '」可以透過抓取網頁網址獲得
  • 「print soup.text」可以變形成
    • print soup.contents
    • print soup.select('html')[0]
      • print soup.select('a')[0]
      • print soup.select('#title')
      • print soup.select('.class')



request 與 BeautifulSoup 綜合使用


乾,InfoLite 附加元件要去哪邊找啊 orz

程式碼
import requests
from bs4 import BeautifulSoup
res = requests.get("http://tw.taobao.com/product/%E5%A4%9A%E6%A8%A3%E5%B1%8B-%E8%91%AB%E8%98%86-%E4%BF%9D%E6%BA%AB%E6%9D%AF.htm"
                  )
soup = BeautifulSoup(res.text)
for item in soup.select(' .item'):
        print item.select('strong')[0].text, item.select(' .title')[0].text.strip(), item.select(' .J_NickPopup')[0].text
結果


9 則留言:

  1. 哈囉~我執行你的程式後發現那個for迴圈有出現IndexError的情形,檢查後發現是item.select(' .J_NickPopup')這個項目爆掉了,這要怎麼處理??
    感謝><

    回覆刪除
    回覆
    1. 雖然有點晚了,但我遇到這個問題並解決。
      我的環境是python3.5 ubuntu。
      因為你擷取到的串列有些是空串列,所以會報錯。
      可以在這行上方:
      print(item.select('.J_NickPopup')[0].text)
      增加IF判斷:
      if item.select('.J_NickPopup'):

      刪除
  2. 我都是照影片操作的耶,超出影片內容範圍的我也不太清楚 XD
    當初嘗試完後,就沒在碰過了 orz
    我看了一下,網頁裡面,J_NickPopup 這個類別還在,說不定不是這個問題

    先重新檢查一下看是不是套件的問題看看吧
    http://wheatpsy.blogspot.tw/2015/05/python.html

    回覆刪除
  3. 請問那個infolite是什麼程式呀?
    有辦法直接從網頁原始碼看出來嗎?

    回覆刪除
    回覆
    1. https://chrome.google.com/webstore/detail/infolite/ipjbadabbpedegielkhgpiekdlmfpgal/related

      刪除
  4. 我也不曉得 infolite 這個程式要去哪裡裝
    看起來是直接挖原始碼裡頭的屬性

    什麽東西有辦法直接從網頁原始碼看出來 ?

    回覆刪除
  5. https://chrome.google.com/webstore/detail/infolite/ipjbadabbpedegielkhgpiekdlmfpgal

    回覆刪除
    回覆
    1. 對耶,是這個套件!!
      之前 google 過都找不到

      感謝你~

      刪除