python爬取指定微信公眾號(hào)文章
本文實(shí)例為大家分享了python爬取微信公眾號(hào)文章的具體代碼,供大家參考,具體內(nèi)容如下
該方法是依賴于urllib2庫(kù)來(lái)完成的,首先你需要安裝好你的python環(huán)境,然后安裝urllib2庫(kù)
程序的起始方法(返回值是公眾號(hào)文章列表):
def openUrl(): print("啟動(dòng)爬蟲(chóng),打開(kāi)搜狗搜索微信界面") # 加載頁(yè)面 url = 'http://weixin.sogou.com/weixin?type=1&s_from=input&query=要爬取的公眾號(hào)名稱' htmlContentObj = urllib2.urlopen(url) # 將頁(yè)面轉(zhuǎn)化為文本 html = htmlContentObj.read() # 正則匹配 str = re.findall(r"http://mp.weixin.qq.com/profile.+==",html) # 替換轉(zhuǎn)義符得到可訪問(wèn)的鏈接地址 tempHref = re.sub(r"&","&",str[0]) return tempHref
根據(jù)獲取到的文章列表的頁(yè)的鏈接地址(注意是文章列表頁(yè)面的得鏈接地址,不是文章的地址)將頁(yè)面讀取為文本
# 獲取頁(yè)面文本方法 def getHtmlStr(conurl): # 相當(dāng)于把頁(yè)面轉(zhuǎn)化為文本 response = urllib2.urlopen(conurl) # 讀取文本的字符串 htmlStr = response.read() return htmlStr
對(duì)讀取為文本的頁(yè)面進(jìn)行分析并利用正則匹配獲得公眾號(hào)里面文章的標(biāo)題,鏈接地址等內(nèi)容得json對(duì)象
# 文本轉(zhuǎn)換為所需要的json對(duì)象 def htmlToJsonObj(htmlStr): # 正則匹配并得到需要的json字符串 jsonObjstr = re.findall(r"{\"list\":\[.+\]\}", htmlStr) # 字符串轉(zhuǎn)json jsonObj = json.loads(jsonObjstr[len(jsonObjstr)-1]) return jsonObj
然后從json對(duì)象中取出title,拼接url等(我這里只是獲取了鏈接地址和標(biāo)題),將兩個(gè)內(nèi)容分別存在兩個(gè)數(shù)組,以json對(duì)象的方式返回出去(注意拼接url的時(shí)候要替換掉轉(zhuǎn)義符(&))
# 從json對(duì)象中取出所需要的url def jsonObjToArray(jsonObj): hrefs = [] titles = [] # url中的&在html中是& ,故需要替換,下面為正則 patten = re.compile(r"&") # 數(shù)組 arr = jsonObj["list"] # 循環(huán)添加 for i in range(len(arr)): # 每次替換字符串 fixHref = re.sub(patten,"&",arr[i]["app_msg_ext_info"]["content_url"]) # 添加到數(shù)組 titles.append(arr[i]["app_msg_ext_info"]["title"]) hrefs.append("https://mp.weixin.qq.com"+fixHref) jsons = {"hrefs":hrefs,"titles":titles} return jsons #打開(kāi)瀏覽器,進(jìn)行工作 def start(): tempHref = openUrl() # 獲取頁(yè)面文本 htmlStr = getHtmlStr(tempHref) # 文本轉(zhuǎn)json對(duì)象 jsonObj = htmlToJsonObj(htmlStr) # f返回所需要的url數(shù)組 return jsonObjToArray(jsonObj)
最后通過(guò)啟動(dòng)程序的方法啟動(dòng)爬蟲(chóng)并打印爬取到的信息
if __name__=='__main__': try: hrefs = start() count = len(hrefs["hrefs"]) for i in range(count): print("標(biāo)題:"+hrefs["titles"][i].encode("utf-8")) print("爬取到的路徑:"+hrefs["hrefs"][i].encode("utf-8")) print("------------->>爬取并打印完畢") except Exception as e: print(str(e))
程序需要導(dǎo)入的包
import urllib2 import json import re
依次賦值以上代碼,填寫(xiě)要爬取的公眾號(hào),運(yùn)行即可
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)簡(jiǎn)單成績(jī)錄入系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單成績(jī)錄入系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09創(chuàng)建Django項(xiàng)目圖文實(shí)例詳解
這篇文章主要介紹了創(chuàng)建Django項(xiàng)目,結(jié)合圖文與實(shí)例形式詳細(xì)分析了Django項(xiàng)目創(chuàng)建的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2019-06-06Python使用Pandas庫(kù)常見(jiàn)操作詳解
這篇文章主要介紹了Python使用Pandas庫(kù)常見(jiàn)操作,結(jié)合實(shí)例形式詳細(xì)分析了Python Pandas模塊的功能、原理、數(shù)據(jù)對(duì)象創(chuàng)建、查看、選擇等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2020-01-01Python構(gòu)建網(wǎng)頁(yè)爬蟲(chóng)原理分析
這篇文章主要給大家講解了構(gòu)建網(wǎng)頁(yè)爬蟲(chóng)的技術(shù)原理以及實(shí)現(xiàn)的邏輯關(guān)系,有興趣的朋友閱讀下吧。2017-12-12python目標(biāo)檢測(cè)yolo1?yolo2?yolo3和SSD網(wǎng)絡(luò)結(jié)構(gòu)對(duì)比
這篇文章主要為大家介紹了python目標(biāo)檢測(cè)yolo1?yolo2?yolo3和SSD網(wǎng)絡(luò)結(jié)構(gòu)對(duì)比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05pandas如何將DataFrame?轉(zhuǎn)為txt文本去除引號(hào)
這篇文章主要介紹了pandas如何將DataFrame?轉(zhuǎn)為txt文本去除引號(hào),文中補(bǔ)充介紹了DataFrame導(dǎo)CSV?txt?||?每行有雙引號(hào)的原因及解決辦法,感興趣的朋友跟隨小編一起看看吧2024-01-01Python統(tǒng)計(jì)字符內(nèi)容的占比的實(shí)現(xiàn)
本文介紹了如何使用Python統(tǒng)計(jì)字符占比,包括字符串中字母、數(shù)字、空格等字符的占比,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08python定時(shí)任務(wù)apscheduler的詳細(xì)使用教程
APScheduler的全稱是Advanced?Python?Scheduler,它是一個(gè)輕量級(jí)的?Python定時(shí)任務(wù)調(diào)度框架,下面這篇文章主要給大家介紹了關(guān)于python定時(shí)任務(wù)apscheduler的詳細(xì)使用教程,需要的朋友可以參考下2022-02-02