国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python爬取指定微信公眾號文章

2020-02-16 00:14:11
字體:
來源:轉載
供稿:網友

本文實例為大家分享了python爬取微信公眾號文章的具體代碼,供大家參考,具體內容如下

該方法是依賴于urllib2庫來完成的,首先你需要安裝好你的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對象中取出所需要的urldef 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))            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 彭泽县| 中方县| 万盛区| 咸阳市| 甘孜| 桦甸市| 潞西市| 五大连池市| 本溪| 紫云| 平罗县| 玛多县| 称多县| 苍梧县| 商南县| 札达县| 望城县| 柳河县| 京山县| 望都县| 兴业县| 临泽县| 常熟市| 蒙山县| 弥渡县| 尖扎县| 石泉县| 黄龙县| 裕民县| 筠连县| 宿迁市| 湖南省| 达拉特旗| 阿尔山市| 淳化县| 怀来县| 巴楚县| 宜兰市| 甘肃省| 贵州省| 略阳县|