使用 Beautiful Soup 在 Python 中抓取網頁
導讀 | 本文討論如何使用 Beautiful Soup 庫從 HTML 頁面中提取內容。提取後,我們將使用 Beautiful Soup 將其轉換為 Python 列表或字典。 |
為了讓網路抓取在 Python 中工作,我們將執行三個基本步驟:
使用
requests
庫提取 HTML 內容。
分析 HTML 結構並識別包含內容的標籤。
使用 Beautiful Soup 提取標籤並將資料放入 Python 列表中。
首先安裝我們需要的庫。
requests
庫可以從網站獲取 HTML 內容。Beautiful Soup 解析 HTML 並將其轉換為 Python 物件。在Python 3中需要安裝下面兩個庫:
[root@localhost ~]# pip3 install requests beautifulsoup4
本文抓取該網站的技術頁面。如果你轉到該頁面,將看到帶有標題、摘錄和釋出日期的文章列表。我們的目標是建立一個包含該資訊的文章列表。
技術頁面的完整 URL 是:
我們可以使用
requests
從這個頁面獲取 HTML 內容:
#!/usr/bin/python3 import requests url = '' data = requests.get(url) print(data.text)
變數
data
將包含頁面的 HTML 原始碼。
為了從 data 中提取我們的資料,我們需要確定哪些標籤具有我們需要的內容。
如果你瀏覽 HTML,會在頂部附近找到此部分:
<div class="col"> <a href="/2021/08/using-variables-in-jekyll-to-define-custom-content" class="post-card"> <div class="card"> <div class="card-body"> <h5 class="card-title">Using variables in Jekyll to define custom content</h5> <small class="card-text text-muted">I recently discovered that Jekyll's config.yml can be used to define custom variables for reusing content. I feel like I've been living under a rock all this time. But to err over and over again is human.</small> </div> <div class="card-footer text-end"> <small class="text-muted">Aug 2021</small> </div> </div> </a> </div>
這是在每篇文章的整個頁面中重複的部分。我們可以看到
.card-title
有文章標題,
.card-text
有摘錄,
.card-footer
類下面的
small
標籤 有釋出日期。
讓我們使用 Beautiful Soup 提取這些內容。
#!/usr/bin/python3 import requests from bs4 import BeautifulSoup from pprint import pprint url = '' data = requests.get(url) my_data = [] html = BeautifulSoup(data.text, 'html.parser') articles = html.select('a.post-card') for article in articles: title = article.select('.card-title')[0].get_text() excerpt = article.select('.card-text')[0].get_text() pub_date = article.select('.card-footer small')[0].get_text() my_data.append({"title": title, "excerpt": excerpt, "pub_date": pub_date}) pprint(my_data)
上面的程式碼提取文章並將它們放入 my_data 變數中。我正在使用 pprint 來列印輸出。
我們可以將它作為 JSON 返回給另一個應用程式,或者使用自定義樣式將其轉換為 HTML。
本文原創地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2849429/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Beautiful Soup在爬蟲中的基本使用語法爬蟲
- 一起學爬蟲——使用Beautiful Soup爬取網頁爬蟲網頁
- Beautiful Soup庫的使用(學習筆記)筆記
- JB的Python之旅-爬蟲篇--urllib和Beautiful SoupPython爬蟲
- 【Python3網路爬蟲開發實戰】4-解析庫的使用-2 使用Beautiful SoupPython爬蟲
- python爬蟲之Beautiful Soup基礎知識+例項Python爬蟲
- 淺析Beautiful Soup庫和Lxml庫XML
- IP地址在網頁抓取中的作用網頁
- NodeJS使用PhantomJs抓取網頁NodeJS網頁
- 使用chromedriver抓取網頁截圖Chrome網頁
- 使用代理抓取網頁的原因網頁
- Python中使用mechanize庫抓取網頁上的表格資料Python網頁
- IP地址在網頁抓取中有何作用網頁
- 如何用Python爬資料?(一)網頁抓取Python網頁
- Go和JavaScript結合使用:抓取網頁中的影像連結GoJavaScript網頁
- 如何避免在網頁抓取時被檢測到?網頁
- 例項:使用puppeteer headless方式抓取JS網頁JS網頁
- 騰牛網抓取(單頁)
- 如何抓取網頁資訊?網頁
- Python 從底層結構聊 Beautiful Soup 4(內建豆瓣最新電影排行榜爬取案例)Python
- 【Python】Python抓取分享頁面的原始碼示例Python原始碼
- 網頁資料抓取之噹噹網網頁
- 使用openlayers在網頁中展示地理資訊網頁
- 批量抓取網頁pdf檔案網頁
- 在 C# 和 JavaScript 之間選擇進行網頁抓取C#JavaScript網頁
- Python併發程式設計:提高網頁抓取效率實踐指南Python程式設計網頁
- 如何讓Python爬蟲一天抓取100萬張網頁Python爬蟲網頁
- 匿名IP在網路抓取中的應用探索
- 爬蟲抓取網頁資料原理爬蟲網頁
- python怎樣抓取js生成的頁面PythonJS
- Python實現簡單網頁圖片抓取完整程式碼例項Python網頁
- 爬蟲抓取網頁的詳細流程爬蟲網頁
- 網頁抓取的重要性介紹網頁
- 網頁抓取如何幫助資料分析?網頁
- 使用代理進行抓取網頁的主要原因是什麼?網頁
- Python網路爬蟲抓取動態網頁並將資料存入資料庫MYSQLPython爬蟲網頁資料庫MySql
- 學會XPath,輕鬆抓取網頁資料網頁
- 網頁抓取與IPIDEA代理IP的關係網頁Idea