1. 正規表示式
(1)
re.findall('.*?(.*?)', html)
(2)
2. beautifulsoup(bs4)import re
pattern = re.compile("hello")
#match_list = re.findall(pattern, "hello world! hello") 這個是找全部匹配的,返回列表
match = pattern.match("hello world! hello") #這個是找匹配的,有就返回乙個,沒有返回none
print(match)
轉python中使用beautiful soup庫的超詳細教程:
3. lxmlfrom bs4 import beautifulsoup
>>> soup = beautifulsoup(html, "html.parser") #用html直譯器對得到的html文字進行解析
>>> tr = soup.find(attrs=)
>>> tr
area:
244,820 square kilometres
>>> td = tr.find(attrs=)
>>> td
244,820 square kilometres
>>> area = td.text
>>> print(area)
244,820 square kilometres
lxml 是基於libxml2這一xml解析庫的python封裝,該模組使用c語言編寫,解析速度比beautifulsoup更快。經過書中比較分析得出的結論,爬取網頁後抓取資料的一般的步驟為:先解析網頁原始碼(用這3種方法中的lxml),再選擇抓取資料(css選擇器)
#先解析網頁原始碼(lxml)示例
import lxml.html
broken_html = ""
tree = lxml.html.fromstring(broken_html) #解析已經完成
fixed_html = lxml.html.tostring(tree, pretty_print=true)
print(fixed_html)
#output
#b'\n'
#解析網頁原始碼(lxml)後使用css選擇器提取目標資訊
import lxml.html
import cssselect
html = str(html)
tree = lxml.html.fromstring(html) #解析已經完成
td = tree.cssselect("tr#places_area__row > td.w2p_fw")[0] #選擇id="plac..."名為tr的標籤下的,class="w2p..."名為td的標籤中[0]元素
area = td.text_content() #目標資訊area值為td標籤中的text資訊
以上三種方法效能對比與結論:
Python3網頁抓取urllib
開啟網頁的過程其實就是瀏覽器作為乙個瀏覽的 客戶端 向伺服器端傳送了一次請求,把伺服器端的檔案 抓 到本地,再進行解釋 展現。爬蟲最主要的處理物件就是url,它根據url位址取得所需要的檔案內容,然後對它進行進一步的處理。網頁抓取,就是把url位址中指定的網路資源從網路流中讀取出來,儲存到本地。類似...
PHP 網頁內容抓取 抓取網頁內容的兩種常用方法
說到網頁內容的抓取,最常用的兩種方式 1.利用file get contents 函式,簡簡單單 2.curl抓取工具。curl是乙個非常強大的開源庫,支援很多協議,包括http ftp telnet等,我們使用它來傳送http請求。它給我 們帶來的好處是可以通過靈活的選項設定不同的http協議引數...
網路抓取與網路爬取的區別
網路抓取,從其自身的含義到在商業領域使用的各種情況,以及未來商業領域的無限潛能來看,都相對複雜。當然,還有另乙個常見的術語 網路爬取。可能別人會說兩種說法意義相同,但其實還是有細微差別的,今天我們就來了解一下網路抓取與網路爬取之間的區別。在深入了解之前,這裡先做乙個簡短的總結 在本文中,我們將從以下...