新聞中心
一、前言
大家好,我是Python進階者。前幾天在Python交流群里邊有個叫【Arkham】的粉絲問了一個小問題。

十載的托克托網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都營銷網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整托克托建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)從事“托克托網(wǎng)站設(shè)計”,“托克托網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
一開始還是覺得挺奇怪的,瞅著這個格式十分像是json格式,直接用json提取不香么,但是后來發(fā)現(xiàn)就是這么個格式,而且硬是要提取這個里邊的文本信息。
二、思路
一般的,針對文本提取,正則表達式是首選,十分是方便快捷。
這里給出了兩個方法,感謝【(這是月亮的背面)】和【數(shù)據(jù)分析新手-瑜亮】兩位大佬提供的思路。
三、項目實現(xiàn)
這里給大家安排兩種方法,一起來看看吧!文本信息就放這里,大家回頭拿到也可以嘗試練練手。
Top2 26
Top2 "word":"經(jīng)紀人不得為假唱假演奏提供條件"
Top2 "query":"經(jīng)紀人不得為假唱假演奏提供條件"
Top2 "show":[]
Top2 "desc":"18日,文旅部發(fā)布關(guān)于《演出經(jīng)紀人員管理辦法(征求意見稿)》公開征求意見的公告。征求意見稿指出,演出經(jīng)紀人員不得為演員假唱、假演奏提供條件。"
Top2 "img":"https://fyb-1.cdn.bcebos.com/fyb-1//5b4bc1de60744e69f34225af1452a395"
Top2 "url":"https://www.baidu.com/s?wd=%E7%BB%8F%E7%BA%AA%E4%BA%BA%E4%B8%8D%E5%BE%97%E4%B8%BA%E5%81%87%E5%94%B1%E5%81%87%E6%BC%94%E5%A5%8F%E6%8F%90%E4%BE%9B%E6%9D%A1%E4%BB%B6&rsv_dl=fyb_news"
Top2 "rawUrl":"https://www.baidu.com/s?wd=%E7%BB%8F%E7%BA%AA%E4%BA%BA%E4%B8%8D%E5%BE%97%E4%B8%BA%E5%81%87%E5%94%B1%E5%81%87%E6%BC%94%E5%A5%8F%E6%8F%90%E4%BE%9B%E6%9D%A1%E4%BB%B6"
Top2 "hotScore":"2325661"
Top2 "hotChange":"same"
Top2 "hotTag":"0"
Top2 "appUrl":"https://www.baidu.com/s?wd=%E7%BB%8F%E7%BA%AA90%E4%BE%9B%E6%9D%A1%E4%BB%B6&rsv"
1、正則表達式
這個方法十分奏效,代碼如下。
# -*- coding: utf-8 -*-
import re
text = """
Top2 26
Top2 "word":"經(jīng)紀人不得為假唱假演奏提供條件"
Top2 "query":"經(jīng)紀人不得為假唱假演奏提供條件"
Top2 "show":[]
Top2 "desc":"18日,文旅部發(fā)布關(guān)于《演出經(jīng)紀人員管理辦法(征求意見稿)》公開征求意見的公告。征求意見稿指出,演出經(jīng)紀人員不得為演員假唱、假演奏提供條件。"
Top2 "img":"https://fyb-1.cdn.bcebos.com/fyb-1//5b4bc1de60744e69f34225af1452a395"
Top2 "url":"https://www.baidu.com/s?wd=%E7%BB%8F%E7%BA%AA%E4%BA%BA%E4%B8%8D%E5%BE%97%E4%B8%BA%E5%81%87%E5%94%B1%E5%81%87%E6%BC%94%E5%A5%8F%E6%8F%90%E4%BE%9B%E6%9D%A1%E4%BB%B6&rsv_dl=fyb_news"
Top2 "rawUrl":"https://www.baidu.com/s?wd=%E7%BB%8F%E7%BA%AA%E4%BA%BA%E4%B8%8D%E5%BE%97%E4%B8%BA%E5%81%87%E5%94%B1%E5%81%87%E6%BC%94%E5%A5%8F%E6%8F%90%E4%BE%9B%E6%9D%A1%E4%BB%B6"
Top2 "hotScore":"2325661"
Top2 "hotChange":"same"
Top2 "hotTag":"0"
Top2 "appUrl":"https://www.baidu.com/s?wd=%E7%BB%8F%E7%BA%AA%E4%BA%BA%E40%E4%BE%9B%E6%9D%A1%E4%BB%B6&rsv"
"""
regex = re.findall(r'":"(.*?)"', text)
for data in regex:
print(data)
運行之后,可以得到想要的結(jié)果,如下圖所示。
2、split()
這個方法是來自【(這是月亮的背面)】大佬的思路,后來我自己寫了小代碼如下。
# -*- coding: utf-8 -*-
import re
text = """
Top2 26
Top2 "word":"經(jīng)紀人不得為假唱假演奏提供條件"
Top2 "query":"經(jīng)紀人不得為假唱假演奏提供條件"
Top2 "show":[]
Top2 "desc":"18日,文旅部發(fā)布關(guān)于《演出經(jīng)紀人員管理辦法(征求意見稿)》公開征求意見的公告。征求意見稿指出,演出經(jīng)紀人員不得為演員假唱、假演奏提供條件。"
Top2 "img":"https://fyb-1.cdn.bcebos.com/fyb-1//5b4bc1de60744e69f34225af1452a395"
Top2 "url":"https://www.baidu.com/s?wd=%E7%BB%8F%E7%BA%AA%E4%BA%BA%E4%B8%8D%E5%BE%97%E4%B8%BA%E5%81%87%E5%94%B1%E5%81%87%E6%BC%94%E5%A5%8F%E6%8F%90%E4%BE%9B%E6%9D%A1%E4%BB%B6&rsv_dl=fyb_news"
Top2 "rawUrl":"https://www.baidu.com/s?wd=%E7%BB%8F%E7%BA%AA%E4%BA%BA%E4%B8%8D%E5%BE%97%E4%B8%BA%E5%81%87%E5%94%B1%E5%81%87%E6%BC%94%E5%A5%8F%E6%8F%90%E4%BE%9B%E6%9D%A1%E4%BB%B6"
Top2 "hotScore":"2325661"
Top2 "hotChange":"same"
Top2 "hotTag":"0"
Top2 "appUrl":"https://www.baidu.com/s?wd=%E7%BB%8F%E7%BA%AA%E4%BA%BA%E40%E4%BE%9B%E6%9D%A1%E4%BB%B6&rsv"
"""
raw_text = text.strip('\n').split('Top2 ')
for text in raw_text:
print(text.split('":"')[-1].replace('"', ''))
處理起來還是相對費勁的,而且不那么智能,針對文本定制的,比較“死板”,雖然勉強可以實現(xiàn),可是還是不太建議。
四、總結(jié)
本文從實際工作出發(fā),基于Python編程,針對網(wǎng)絡(luò)爬蟲過程中得到的字符串,使用正則表達式和字符串處理函數(shù)split(),完成了字符串的處理,滿足粉絲的要求。
本文標題:盤點一道Python網(wǎng)絡(luò)爬蟲中使用正則表達式匹配字符的題目
文章起源:http://www.fisionsoft.com.cn/article/cohgcie.html


咨詢
建站咨詢
