
發(fā)布
注冊
/
登錄解析html
關(guān)注創(chuàng)建者:博集華仿 創(chuàng)建時間:2019-10-11

解析html的實例教程
00 靜態(tài)網(wǎng)頁
爬取靜態(tài)網(wǎng)頁分為兩步:第一,獲取網(wǎng)頁的HTML文檔,第二,解析HTML文檔。
獲取HTML文檔的方法包含:urllib,urllib2,requestes;其中推薦requestes方法。
解析HTML文檔,推薦BeautifulSoup方法。解析HTML文檔的主要工作就是定位頁面元素,然后獲得這些元素。
01 動態(tài)網(wǎng)頁
所謂動態(tài)網(wǎng)頁,就是網(wǎng)頁上顯示的內(nèi)容不全部包含在當前HTML文檔中,這樣使用上文靜態(tài)網(wǎng)頁爬取方法則可能無法獲取想要的信息。
爬取動態(tài)網(wǎng)頁的方法有:Selenium,Pyppeneer,PhantomJS,Mechanize等;筆者學習的是Selenium,該方法模擬用戶驅(qū)動瀏覽器,等需要的內(nèi)容在瀏覽器中都加載完成,再爬取所需信息。學習Selenium方法的重點之一也是頁面元素定位,包含各種定位方式。
02 爬蟲框架
為了提高爬蟲編寫效率,存在很多爬蟲框架,爬蟲框架的主要作用就是寫盡量少的代碼,完成盡量多的工作。提高爬蟲程序編寫的效率。
03 數(shù)據(jù)庫
爬取到數(shù)據(jù)后需要存放,必然會使用到數(shù)據(jù)庫。比如SQL數(shù)據(jù)庫,比如MySQL,PostgreSQL等;也能使用NoSQL,比如MongoDB。
04 反爬蟲
如果每個網(wǎng)站都沒有反爬蟲,那爬取網(wǎng)絡資源真的太簡單了。然而現(xiàn)實是,網(wǎng)站并不希望程序來自動訪問服務器。所以各種反爬技術(shù)無疑提高了爬取信息的難度,提高了網(wǎng)絡爬蟲的門檻。可以說,網(wǎng)絡爬蟲的基本方法很簡單,學習怎么應付反爬蟲才是爬蟲水平的彰顯。
05 高效率
如果我們只是爬取100,1000個網(wǎng)頁,那談不上爬蟲運行效率問題。但如果我們需要爬取百萬個網(wǎng)頁。這就要學習分布式爬蟲,多線程,多進程等概念了。這些技術(shù)主要為海量爬蟲任務服務。
展開 01 requests庫
requests庫用于下載網(wǎng)頁,
在python中的安裝方法是:pip install requests
使用時:import requests
02 bs4庫的BeautifulSoup模塊
BeautifulSoup用于解析HTML文本,
安裝方法是:pip install bs4
使用時: from bs4 import BeautifulSoup
03 實戰(zhàn)-爬取豆瓣top250影片名稱
廢話少說,進入實戰(zhàn);
豆瓣top250電影網(wǎng)站:
第一頁:https://movie.douban.com/top250?start=0&filter=
第二頁:https://movie.douban.com/top250?start=25&filter=
第三頁:https://movie.douban.com/top250?
展開 《Python網(wǎng)絡編程基礎》全面介紹了使用Python語言進行網(wǎng)絡編程的基礎知識,主要內(nèi)容包括網(wǎng)絡基礎知識、高級網(wǎng)絡操作、Web Services、解析HTML和XHTML、XML、E-mail服務、FTP、使用Python操作數(shù)據(jù)庫、SSL、幾種服務器端框架(包括Socket服務器、SimpleXMLRPCServer、CGI和mod_python),以及多任務處理(包括Forking、線程和異步通信等。
作者簡介
John Goerzen從1996年開始就是Debian GNU/Linux操作系統(tǒng)開發(fā)組的成員,最近15年他一直都在從事軟件開發(fā)方面的工作。他對操作系統(tǒng)、程序語言和網(wǎng)絡都很感興趣,并且在工作中也開發(fā)并用到以上這些方面的各種軟件。目前,他在一個中等規(guī)模的制造公司中擔當程序員和Unix管理員,并且已經(jīng)使用Python開發(fā)了很多用于公司數(shù)據(jù)系統(tǒng)的接口。
作為Debian工作組成員,John為系統(tǒng)維護了很多不同的程序。從1998年開始,他就致力于啟動或向新的體系結(jié)構(gòu)擴展Debian,并在Alpha、PowerPC、AMD64和NetBSD i386上取得了很大的成就。
展開 摘要:獲得網(wǎng)頁的html文檔后,需要先解析html文檔,才能提取所需文本。BeautifulSoup是筆者認為最好用的網(wǎng)頁解析工具。
00 安裝bs庫
pip install bs4
01 解析html
import requests
import chardet
from bs4 import BeautifulSoup
headers={'User-Agent':'Mozillaxxxxxxxxxx'}
link='https://xxxxxxxxxxxxxx'
res=requests.get(link,headers=headers,timeout=10)
res.encoding=chardet.detect(res.content)['encoding']
soup=BeautifulSoup(res.text,'lxml') #使用BeautifulSoup解析res
查看一下soup;
print(soup)
很像我們在瀏覽器上查看的html,有時候為了更好的排版,一般都使用;
print(soup.prettify())
其實BeautifulSoup的作用就是將html文檔轉(zhuǎn)化了一下(轉(zhuǎn)化成樹結(jié)構(gòu)),并且在這個樹結(jié)構(gòu)中,分為四種對象:Tag,NavigableString,Comment,BeautifulSoup。Tag對象就是原html的標記;NavigableString對象就是原html的文本;Comment對象特殊類型的NavigableString對象;BeautifulSoup對象就是文檔的全部內(nèi)容。其中最重要的兩個對象是Tag和NavigableString。
展開 基本原理:1.發(fā)送請求,獲取網(wǎng)頁HTML源碼;解析HTML,獲取數(shù)據(jù);保存數(shù)據(jù)。2
模擬瀏覽器登錄,獲取并解析HTML,獲取數(shù)據(jù)。利用Python中的庫即可便捷實現(xiàn)。
功能實現(xiàn)1:知乎答案爬取
實現(xiàn)思路:
1. 首先實現(xiàn)安裝好第三方模塊requests和bs4并調(diào)用。
2. 其次設置Http請求頭,利用requests訪問網(wǎng)頁獲取到源代碼,利用bs模塊中的BeautifulSoup得到解析過后的html。
3. 隨后,分別通過對照網(wǎng)頁源代碼中標簽內(nèi)容進行匹配,分別獲取問題標題、問題內(nèi)容、點贊數(shù)以及答案等內(nèi)容。
4. 最后進行包括知乎答案等信息的打印。
分別對應上述思路進行代碼編寫。
1. 調(diào)用第三方模塊。
#-*- coding: UTF-8 -*-
# 爬取知乎答案
import requests
from bs4 import BeautifulSoup
2. 設置Http請求頭:可以在Chrome谷歌瀏覽器的網(wǎng)頁中的任意地方按下F12,打開chrome自帶的調(diào)試工具,在調(diào)試工具中選擇network標簽,F(xiàn)5刷新網(wǎng)頁后在左邊找到該網(wǎng)頁url,點擊該url,選擇Headers,就可以看到當前網(wǎng)頁的Http頭。復制到header={}中。
獲取源代碼并解析:利用requests和BeautifulSoup實現(xiàn),并返回解析后的body。
展開 
解析html的相關(guān)專題、標簽、搜索
解析html的最新內(nèi)容
此腳本將向您展示如何解析示例 HTML 文檔以獲取感興趣的數(shù)據(jù):
解釋:
在下面的示例中,BeautifulSoup 用于解析示例 HTML 文檔并提取特定數(shù)據(jù)。首先,導入 BeautifulSoup 庫并定義示例 HTML 字符串。然后使用 'html.parser' 參數(shù)通過 BeautifulSoup 解析 HTML,以創(chuàng)建解析樹。
基本原理:1.發(fā)送請求,獲取網(wǎng)頁HTML源碼;解析HTML,獲取數(shù)據(jù);保存數(shù)據(jù)。2
模擬瀏覽器登錄,獲取并解析HTML,獲取數(shù)據(jù)。利用Python中的庫即可便捷實現(xiàn)。
功能實現(xiàn)1:知乎答案爬取
實現(xiàn)思路:
1. 首先實現(xiàn)安裝好第三方模塊requests和bs4并調(diào)用。
2.
1、是通過爬蟲的方式獲取天氣預報網(wǎng)站的HTML頁面,然后使用xpath或者bs4解析HTML界面的內(nèi)容。
2、另一種方式是根據(jù)天氣預報網(wǎng)站提供的API,直接獲取結(jié)構(gòu)化數(shù)據(jù),省去了解析HTML頁面的步驟。
本例使用的是第二種方式,請求地址為:
http://wthrcdn.etouch.cn/weather_mini?
下載Parsedown
Parsedown可以將MarkDown內(nèi)容解析為HTML,如果內(nèi)容已經(jīng)是HTML則不進行解析,有了Parsedown的支持,在發(fā)表WordPress文章的時候不僅兼容原來的文本模式(HTML)也可以使用MarkDown語法寫作,兩者互不沖突。
解析器 143
6.5 數(shù)據(jù)存儲器 145
6.6 爬蟲調(diào)度器 146
6.7 小結(jié) 147
第7章 實戰(zhàn)項目:簡單分布式爬蟲 148
7.1 簡單分布式爬蟲結(jié)構(gòu) 148
7.2 控制節(jié)點 149
7.2.1 URL管理器 149
7.2.2 數(shù)據(jù)存儲器 151
7.2.3 控制調(diào)度器 153
7.3 爬蟲節(jié)點 155
7.3.1 HTML下載器 155
7.3.2 HTML解析器 156
7.3.3
全網(wǎng)最全Python必讀書藉合集(PDF文檔免費下載)
目錄
譯者序 ix
前言 xi
第一部分 創(chuàng)建爬蟲
第1章 初見網(wǎng)絡爬蟲 2
1.1 網(wǎng)絡連接 2
1.2 BeautifulSoup簡介 4
1.2.1 安裝BeautifulSoup 5
1.2.2 運行BeautifulSoup 7
1.2.3 可靠的網(wǎng)絡連接 8
第2章 復雜HTML解析 11
HTML 199
10.5.1 從HTML創(chuàng)建一個BeautifulSoup對象 200
10.5.2 用select()方法尋找元素 200
10.5.3 通過元素的屬性獲取數(shù)據(jù) 202
10.6 項目:“I’mFeelingLucky”Google查找 202
第1步:獲取命令行參數(shù),并請求查找頁面 203
第2步:找到所有的結(jié)果 203第3步:針對每個結(jié)果打開Web瀏覽器 204
第4步:類似程序的想法
《Python網(wǎng)絡編程基礎》全面介紹了使用Python語言進行網(wǎng)絡編程的基礎知識,主要內(nèi)容包括網(wǎng)絡基礎知識、高級網(wǎng)絡操作、Web Services、解析HTML和XHTML、XML、E-mail服務、FTP、使用Python操作數(shù)據(jù)庫、SSL、幾種服務器端框架(包括Socket服務器、SimpleXMLRPCServer、CGI和mod_python),以及多任務處理(包括Forking、線程和異步通信等
解析器 143
6.5 數(shù)據(jù)存儲器 145
6.6 爬蟲調(diào)度器 146
6.7 小結(jié) 147
第7章 實戰(zhàn)項目:簡單分布式爬蟲 148
7.1 簡單分布式爬蟲結(jié)構(gòu) 148
7.2 控制節(jié)點 149
7.2.1 URL管理器 149
7.2.2 數(shù)據(jù)存儲器 151
7.2.3 控制調(diào)度器 153
7.3 爬蟲節(jié)點 155
7.3.1 HTML下載器 155
7.3.2 HTML解析器 156
7.3.3
00 靜態(tài)網(wǎng)頁
爬取靜態(tài)網(wǎng)頁分為兩步:第一,獲取網(wǎng)頁的HTML文檔,第二,解析HTML文檔。
獲取HTML文檔的方法包含:urllib,urllib2,requestes;其中推薦requestes方法。
解析HTML文檔,推薦BeautifulSoup方法。解析HTML文檔的主要工作就是定位頁面元素,然后獲得這些元素。