爬蟲2-BeautifulSoup (Python)
我們來談談BeautifulSoup,有關美麗的湯
快點跟上,來不及了
Beautiful Soup是一個Python庫,用於從HTML和XML文件中提取數據,甚麼你不知道HTML是甚麼,快來看看這篇文章吧 (晚點附上),簡單說他就是一個尋找HTML標籤的涵式庫
Beautiful Soup
來來來~~先附上Import的新鮮程式碼,並且把它寫在最上面喔
import scrapy
from bs4 import BeautifulSoup
我們這樣就可以使用BeautifulSoup啦,話不多說馬上來作範例:(這邊我們採取用金正恩領導人的維基來作範例)
from bs4 import BeautifulSoup
from scrapy.crawler import CrawlerProcess
class ExampleSpider(scrapy.Spider):
name = 'example'
allowed_domains = ['example.com']
start_urls = ['<https://zh.wikipedia.org/wiki/%E9%87%91%E6%AD%A3%E6%81%A9>']
def parse(self, response):
content = response.body
soup = BeautifulSoup(content, "html5lib")
print(soup)
#這邊放在程式碼最底下 好讓你可以在IDE直接執行可以看內容
process = CrawlerProcess()
process.crawl(ExampleSpider)
process.start()
利用VS code執行後在我們的終端機應該可以看這樣的內容(或是直接在終端機輸入 scrapy crawl example)
這部分的code是發出request然後把回傳的資料解析,而這些回傳解析是靠BeautifulSoup解析完後所print出來的
我們來打開google的devtool吧(也可以再chrome按下F12)
在上面的圖案你可以看到我紅框起來的資料是一樣的,而BeautifulSoup就是幫我們把回傳的資料解析成這樣,這樣你就可以針對Html的某個標籤進行萃取你所需要的資料
BeautifulSoup參數
def parse(self, response):
content = response.body
soup = BeautifulSoup(content, "html5lib")
在使用除了第一個參數通常都是既定的,我們來介紹一下第二個參數,我列了一張表在下面供給大家參考
解析器 | 使用方法 | 優勢 | 劣勢 |
---|---|---|---|
Python標準庫 | BeautifulSoup(markup, “html.parser”) |
|
|
lxml HTML 解析器 | BeautifulSoup(markup, “lxml”) |
|
|
lxml XML 解析器 | BeautifulSoup(markup, [“lxml”, “xml”])BeautifulSoup(markup, “xml”) |
|
|
html5lib | BeautifulSoup(markup, “html5lib”) |
|
|
下一篇文我們來講講如何確切使用BeautifulSoup吧
留言
張貼留言