Datawhale-爬蟲-Task3(beautifulsoup)
Beautiful Soup
- Beautiful Soup是一個非常流行的Python模組。該模組可以解析網頁,並提供定位內容的便捷介面。
- 使用Beautiful Soup的第一步是將已下載的HTML內容解析為soup文件。由於大多數網頁都不具備良好的HTML格式,因此Beautiful Soup需要對其實際格式進行確定。
例如,在下面這個簡單的網頁列表中,存在屬性值兩側引號缺失和標籤未閉合的問題:
<ul class = country>
<li>Area
<li>Population
</ul>
如果Population列表項被解析為Area列表的子元素,而不是並列兩個列表項的話,我們在抓取時就會得到錯誤的結果。下面我們看一下Beautiful Soup是如何處理的。
from bs4 import BeautifulSoup
broken_html = '<ul class=country><li>Area<li>Population</ul>'
soup = BeautifulSoup(broken_html,'html.parser')
fixed_html = soup.prettify()
print(fixed_html)
<ul class = "country">
<li>Area</li>
<li>Population</li>
</ul>
從上面結果可以看出,Beautiful soup能正確解析缺失的引號並閉合標籤,現在我們就可以使用find()和findall()方法來定位我們需要的元素了。
案例:
使用beautifulsoup提取下面丁香園論壇的特定帖子的所有回覆內容,以及回覆人的資訊。
- 首先進去丁香園論壇檢視源網頁找到相關的HTML標籤
發帖人:
帖子的內容:
發現這兩個標籤都是唯一的,所以直接使用find在HTML中找到標籤即可:
user_id = item.find("div", "auth").get_text()
content = item.find("td", "postbody").get_text("|", strip=True)
所有程式碼:
import requests
from bs4 import BeautifulSoup as bs
def get_soup():
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'
}
url = 'http://www.dxy.cn/bbs/thread/626626'
try:
html = requests.get(url,headers = headers)
if html.status_code == 200:
return html.text
except:
pass
def get_item(html):
topic_con = bs(html, 'lxml')
table = topic_con.find_all('tbody')
datas = []
for item in table:
try:
user_id = item.find("div", "auth").get_text()
content = item.find("td", "postbody").get_text("|", strip=True)
datas.append((user_id, content))
except:
pass
return datas
def main():
html = get_soup()
info = get_item(html)
for x in info:
print(x)
if __name__ == '__main__':
main()
執行結果:
相關文章
- Python爬蟲之BeautifulSoupPython爬蟲
- Python爬蟲之BeautifulSoup庫Python爬蟲
- Datawhale-爬蟲-Task4(學習xpath)爬蟲
- python 小爬蟲 DrissionPage+BeautifulSoupPython爬蟲
- 爬蟲系列 | 6、詳解爬蟲中BeautifulSoup4的用法爬蟲
- Datawhale-爬蟲-Task2(正規表示式)爬蟲
- Datawhale-爬蟲-Task5(selenium學習)爬蟲
- python爬蟲 之 BeautifulSoup庫入門Python爬蟲
- 爬蟲-BeautifulSoup簡單分析和學習爬蟲
- Datawhale-爬蟲-Task7(實戰大專案)爬蟲
- python爬蟲常用庫之BeautifulSoup詳解Python爬蟲
- 爬蟲(6) - 網頁資料解析(2) | BeautifulSoup4在爬蟲中的使用爬蟲網頁
- python爬蟲:使用BeautifulSoup修改網頁內容Python爬蟲網頁
- 爬蟲入門系列(四):HTML 文字解析庫 BeautifulSoup爬蟲HTML
- 使用requests+BeautifulSoup的簡單爬蟲練習爬蟲
- Python爬蟲群作業-Week3-BeautifulSoupPython爬蟲
- Python 爬蟲實戰(一):使用 requests 和 BeautifulSoupPython爬蟲
- Datawhale-爬蟲-Task1(學習get與post請求)爬蟲
- Datawhale-爬蟲-Task6(學習IP相關知識)爬蟲
- [python爬蟲] BeautifulSoup和Selenium簡單爬取知網資訊測試Python爬蟲
- Python3爬蟲利器:BeautifulSoup4的安裝Python爬蟲
- 爬蟲-使用BeautifulSoup4(bs4)解析html資料爬蟲HTML
- [python爬蟲] BeautifulSoup爬取+CSV儲存貴州農產品資料Python爬蟲
- Python 爬蟲十六式 - 第五式:BeautifulSoup,美味的湯Python爬蟲
- Python爬蟲教程-25-資料提取-BeautifulSoup4(三)Python爬蟲
- Python爬蟲教程-24-資料提取-BeautifulSoup4(二)Python爬蟲
- Python爬蟲教程-23-資料提取-BeautifulSoup4(一)Python爬蟲
- BeautifulSoup與正則_簡單爬蟲python3實現爬蟲Python
- 用 BeautifulSoup 爬資料
- [python爬蟲] 招聘資訊定時系統 (一).BeautifulSoup爬取資訊並儲存MySQLPython爬蟲MySql
- [python爬蟲] BeautifulSoup和Selenium對比爬取豆瓣Top250電影資訊Python爬蟲
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- Python 爬蟲進階篇-利用beautifulsoup庫爬取網頁文章內容實戰演示Python爬蟲網頁
- [python爬蟲] BeautifulSoup設定Cookie解決網站攔截並爬取螞蟻短租Python爬蟲Cookie網站
- Python+PhantomJS+selenium+BeautifulSoup實現簡易網路爬蟲PythonJS爬蟲
- 爬蟲:多程式爬蟲爬蟲
- python爬蟲學習(一):BeautifulSoup庫基礎及一般元素提取方法Python爬蟲
- 通用爬蟲與聚焦爬蟲爬蟲