您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關使用python怎么爬取指定微信公眾號的文章,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
首先你需要安裝好你的python環境,然后安裝urllib2庫
程序的起始方法(返回值是公眾號文章列表):
def openUrl(): print("啟動爬蟲,打開搜狗搜索微信界面") # 加載頁面 url = 'http://weixin.sogou.com/weixin?type=1&s_from=input&query=要爬取的公眾號名稱' htmlContentObj = urllib2.urlopen(url) # 將頁面轉化為文本 html = htmlContentObj.read() # 正則匹配 str = re.findall(r"http://mp.weixin.qq.com/profile.+==",html) # 替換轉義符得到可訪問的鏈接地址 tempHref = re.sub(r"&","&",str[0]) return tempHref
根據獲取到的文章列表的頁的鏈接地址(注意是文章列表頁面的得鏈接地址,不是文章的地址)將頁面讀取為文本
# 獲取頁面文本方法 def getHtmlStr(conurl): # 相當于把頁面轉化為文本 response = urllib2.urlopen(conurl) # 讀取文本的字符串 htmlStr = response.read() return htmlStr
對讀取為文本的頁面進行分析并利用正則匹配獲得公眾號里面文章的標題,鏈接地址等內容得json對象
# 文本轉換為所需要的json對象 def htmlToJsonObj(htmlStr): # 正則匹配并得到需要的json字符串 jsonObjstr = re.findall(r"{\"list\":\[.+\]\}", htmlStr) # 字符串轉json jsonObj = json.loads(jsonObjstr[len(jsonObjstr)-1]) return jsonObj
然后從json對象中取出title,拼接url等(我這里只是獲取了鏈接地址和標題),將兩個內容分別存在兩個數組,以json對象的方式返回出去(注意拼接url的時候要替換掉轉義符(&))
# 從json對象中取出所需要的url def jsonObjToArray(jsonObj): hrefs = [] titles = [] # url中的&在html中是& ,故需要替換,下面為正則 patten = re.compile(r"&") # 數組 arr = jsonObj["list"] # 循環添加 for i in range(len(arr)): # 每次替換字符串 fixHref = re.sub(patten,"&",arr[i]["app_msg_ext_info"]["content_url"]) # 添加到數組 titles.append(arr[i]["app_msg_ext_info"]["title"]) hrefs.append("https://mp.weixin.qq.com"+fixHref) jsons = {"hrefs":hrefs,"titles":titles} return jsons #打開瀏覽器,進行工作 def start(): tempHref = openUrl() # 獲取頁面文本 htmlStr = getHtmlStr(tempHref) # 文本轉json對象 jsonObj = htmlToJsonObj(htmlStr) # f返回所需要的url數組 return jsonObjToArray(jsonObj)
最后通過啟動程序的方法啟動爬蟲并打印爬取到的信息
if __name__=='__main__': try: hrefs = start() count = len(hrefs["hrefs"]) for i in range(count): print("標題:"+hrefs["titles"][i].encode("utf-8")) print("爬取到的路徑:"+hrefs["hrefs"][i].encode("utf-8")) print("------------->>爬取并打印完畢") except Exception as e: print(str(e))
程序需要導入的包
import urllib2 import json import re
依次賦值以上代碼,填寫要爬取的公眾號,運行即可
關于使用python怎么爬取指定微信公眾號的文章就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。