Python 中的 Web Scraping(使用 BeautifulSoup)
在執行資料科學任務時,通常希望使用網際網路上的資料。你通常可以通過應用程式程式設計介面(API)或其他格式訪問此資料。但是,有時你想要的資料只能作為網頁的一部分進行訪問。在這種情況下,一種稱為網路抓取的技術應運而生。
要應用此技術從網頁獲取資料,我們需要掌握網頁結構和網頁開發中使用的標籤的基本知識(即 <html>
,<li>
,<div>
等)。如果你不熟悉 Web 開發,可以在此處學習。
因此,從網頁報廢開始,我們將使用一個簡單的網站 。我們將使用 requests
模組來獲取網頁內容或原始碼。
import requests
page = requests.get("http://dataquestio.github.io/web-scraping-pages/simple.html")
print (page.content) ## shows the source code
現在我們將使用 bs4 模組來廢棄內容以獲取有用的資料。
from bs4 import BeautifulSoup
soup = BeautifulSoup(page.content, 'html.parser')
print(soup.prettify()) ##shows source in html format
你可以在瀏覽器中使用 inspect element
工具找到所需的標籤。現在假設你要獲取與 <li>
標籤一起儲存的所有資料。然後你可以使用指令碼找到它
soup.find_all('li')
# you can also find all the list items with class='ABC'
# soup.find_all('p', class_='ABC')
# OR all elements with class='ABC'
# soup.find_all(class_="ABC")
# OR all the elements with class='ABC'
# soup.find_all(id="XYZ")
然後,你可以使用標記獲取文字
for i in range(len(soup.find_all('li'))):
print (soup.find_all('li')[i].get_text())
整個指令碼很小很簡單。
import requests
from bs4 import BeautifulSoup
page = requests.get("http://dataquestio.github.io/web-scraping-pages/simple.html") #get the page
soup = BeautifulSoup(page.content, 'html.parser') # parse according to html
soup.find_all('li') #find required tags
for i in range(len(soup.find_all('li'))):
print (soup.find_all('li')[i].get_text())