python爬蟲常用解析庫lxml、pyquery瑟俭、bs4翎卓、re執(zhí)行效率對比

我們知道python爬蟲的解析庫有很多,我們選取了lxml摆寄,bs4失暴,re,pyquery微饥,進行測試锐帜。

  • bs4:純python寫的文檔樹解析庫,它有4種解析器(lxml,html.parser,html5lib),我們測試的是lxml畜号,主要可以通過標簽進行定位,也可以通過css選擇器進行定位
  • pyquery:模擬前端jQuery寫的python文檔樹解析庫允瞧,用起來跟jQuery非常相似简软,用的都是css語法進行定位元素
  • xpath:lxml是用c語言編寫通過python調用的解析庫蛮拔,用的xpath語法
  • re:python正則表達式庫
    4個庫各有優(yōu)缺點:
  • bs4更多的用于解析script標簽的文本,因為它的速度實在太慢了
  • re則是進行非結構化的文檔進行匹配
  • lxml底層是c實現(xiàn)的痹升,在速度上毋庸置疑建炫,同時易用性也很高
  • pyquery使用更加比xpath和bs4更加靈活,PyQuery對象可以直接解析html文件疼蛾,url(通過urllib進行請求返回結果)肛跌,文檔字符串

代碼如下

"""
@Author: Jonescyna
@Created: 2020/12/28
"""

import requests
import time
import re
from pyquery import PyQuery as pq
from lxml import etree
from bs4 import BeautifulSoup


def cal_time(func):
    def inner(*args, **kwargs):
        start = time.time()
        ret = func(*args, **kwargs)
        print(f'{func.__name__}:{time.time() - start}s')
        return ret

    return inner


base_url = 'https://www.amazon.cn/b/ref=s9_acss_bw_cg_pccateg_2a1_w?node=106200071&pf_rd_m=A1U5RCOVU0NYF2&pf_rd_s=merchandised-search-2&pf_rd_r=PQNKPPABQXAWCTZSNFXA&pf_rd_t=101&pf_rd_p=cdcd9a0d-d7cf-4dab-80db-2b7d63266973&pf_rd_i=42689071'


def get(url):
    headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0', }

    resp = requests.get(url, headers=headers)
    return resp.text


@cal_time
def parse_by_pq(html):
    for _ in range(50):
        doc = pq(html)

        h2_list = doc('h2').items()
        for h2 in h2_list:
            h2.text()


@cal_time
def parse_by_xpath(html):
    for _ in range(50):
        doc = etree.HTML(html)
        h2_list = doc.xpath('//h2')
        for h2 in h2_list:
            title = h2.xpath('./text()')[0]


@cal_time
def parse_by_bs4(html):
    for _ in range(50):
        soup = BeautifulSoup(html, 'lxml')
        h2_list = soup.find_all('h2')
        for h2 in h2_list:
            title = h2.text


@cal_time
def parse_by_re(html):
    for _ in range(50):
        h2_list = re.findall(r'<h2 .*>\n(.*)\n<', html)
        for h2 in h2_list:
            title = h2


if __name__ == '__main__':
    resp = get(base_url)
    parse_by_pq(resp)
    parse_by_xpath(resp)
    parse_by_bs4(resp)
    parse_by_re(resp)

執(zhí)行結果

測試環(huán)境:本人用的是臺式電腦進行的測試,win10系統(tǒng)配置為i5察郁,16G內存(ddr3)衍慎,不同的電腦跟網(wǎng)絡環(huán)境直接影響解析速度,在相同的環(huán)境下皮钠,時間浮動不會太大

parse_by_pq:0.9650003910064697s
parse_by_xpath:0.761019229888916s
parse_by_bs4:2.878000020980835s
parse_by_re:0.01597905158996582s
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末稳捆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子麦轰,更是在濱河造成了極大的恐慌乔夯,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件款侵,死亡現(xiàn)場離奇詭異末荐,居然都是意外死亡,警方通過查閱死者的電腦和手機新锈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門甲脏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人壕鹉,你說我怎么就攤上這事剃幌。” “怎么了晾浴?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵负乡,是天一觀的道長。 經(jīng)常有香客問我脊凰,道長抖棘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任狸涌,我火速辦了婚禮切省,結果婚禮上,老公的妹妹穿的比我還像新娘帕胆。我一直安慰自己朝捆,他們只是感情好,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布懒豹。 她就那樣靜靜地躺著芙盘,像睡著了一般驯用。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上儒老,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天蝴乔,我揣著相機與錄音,去河邊找鬼驮樊。 笑死薇正,一個胖子當著我的面吹牛,可吹牛的內容都是我干的囚衔。 我是一名探鬼主播挖腰,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼佳魔!你這毒婦竟也來了曙聂?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤鞠鲜,失蹤者是張志新(化名)和其女友劉穎宁脊,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贤姆,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡榆苞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了霞捡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坐漏。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖碧信,靈堂內的尸體忽然破棺而出赊琳,到底是詐尸還是另有隱情,我是刑警寧澤砰碴,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布躏筏,位于F島的核電站,受9級特大地震影響呈枉,放射性物質發(fā)生泄漏趁尼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一猖辫、第九天 我趴在偏房一處隱蔽的房頂上張望酥泞。 院中可真熱鬧,春花似錦啃憎、人聲如沸芝囤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凡人。三九已至名党,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挠轴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工耳幢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留岸晦,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓睛藻,卻偏偏與公主長得像启上,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子店印,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容