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())