爬取網頁後的抓取資料 3種抓取網頁資料方法

2021-08-01 08:45:37 字數 1777 閱讀 2594

1. 正規表示式

(1)

re.findall('.*?(.*?)', html)
(2)

import re

pattern = re.compile("hello")

#match_list = re.findall(pattern, "hello world! hello") 這個是找全部匹配的,返回列表

match = pattern.match("hello world! hello") #這個是找匹配的,有就返回乙個,沒有返回none

print(match)

2. beautifulsoup(bs4)

轉python中使用beautiful soup庫的超詳細教程:

from 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

3. lxml

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協議引數...

網路抓取與網路爬取的區別

網路抓取,從其自身的含義到在商業領域使用的各種情況,以及未來商業領域的無限潛能來看,都相對複雜。當然,還有另乙個常見的術語 網路爬取。可能別人會說兩種說法意義相同,但其實還是有細微差別的,今天我們就來了解一下網路抓取與網路爬取之間的區別。在深入了解之前,這裡先做乙個簡短的總結 在本文中,我們將從以下...