站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

爬取微信公眾號(hào)文章并保存為PDF文件(Python方法)

爬取微信公眾號(hào)文章并保存為PDF文件(Python方法)

【相關(guān)學(xué)習(xí)推薦:微信公眾號(hào)開(kāi)發(fā)教程】

前言

第一次寫(xiě)博客,主要內(nèi)容是爬取微信公眾號(hào)的文章,將文章以PDF格式保存在本地。

爬取微信公眾號(hào)文章(使用wechatsogou)

1.安裝

pip install wechatsogou --upgrade

wechatsogou是一個(gè)基于搜狗微信搜索的微信公眾號(hào)爬蟲(chóng)接口

2.使用方法

使用方法如下所示

import wechatsogou # captcha_break_time為驗(yàn)證碼輸入錯(cuò)誤的重試次數(shù),默認(rèn)為1 ws_api = wechatsogou.WechatSogouAPI(captcha_break_time=3) # 公眾號(hào)名稱(chēng) gzh_name = '' # 將該公眾號(hào)最近10篇文章信息以字典形式返回 data = ws_api.get_gzh_article_by_history(gzh_name)

data數(shù)據(jù)結(jié)構(gòu):

{     'gzh': {         'wechat_name': '',  # 名稱(chēng)         'wechat_id': '',  # 微信id         'introduction': '',  # 簡(jiǎn)介         'authentication': '',  # 認(rèn)證         'headimage': ''  # 頭像     },     'article': [         {             'send_id': int,  # 群發(fā)id,注意不唯一,因?yàn)橥淮稳喊l(fā)多個(gè)消息,而群發(fā)id一致             'datetime': int,  # 群發(fā)datatime 10位時(shí)間戳             'type': '',  # 消息類(lèi)型,均是49(在手機(jī)端歷史消息頁(yè)有其他類(lèi)型,網(wǎng)頁(yè)端最近10條消息頁(yè)只有49),表示圖文             'main': int,  # 是否是一次群發(fā)的第一次消息 1 or 0             'title': '',  # 文章標(biāo)題             'abstract': '',  # 摘要             'fileid': int,  #             'content_url': '',  # 文章鏈接             'source_url': '',  # 閱讀原文的鏈接             'cover': '',  # 封面圖             'author': '',  # 作者             'copyright_stat': int,  # 文章類(lèi)型,例如:原創(chuàng)啊         },         ...     ] }

這里需要得到兩個(gè)信息:文章標(biāo)題,文章url。

得到文章url以后,就可以根據(jù)url將html頁(yè)面轉(zhuǎn)換成pdf文件了。

生成PDF文件

1.安裝wkhtmltopdf

下載地址:https://wkhtmltopdf.org/downloads.html

2.安裝pdfkit

pip install pdfkit

3.使用方法

import pdfkit # 根據(jù)url生成pdf pdfkit.from_url('http://baidu.com','out.pdf') # 根據(jù)html文件生成pdf pdfkit.from_file('test.html','out.pdf') # 根據(jù)html代碼生成pdf pdfkit.from_string('Hello!','out.pdf')

如果直接用上面得到的文章url去生成pdf,會(huì)出現(xiàn)pdf文件不顯示文章圖片的問(wèn)題。

解決辦法:

# 該方法根據(jù)文章url對(duì)html進(jìn)行處理,使圖片顯示 content_info = ws_api.get_article_content(url) # 得到html代碼(代碼不完整,需要加入head、body等標(biāo)簽) html_code = content_info['content_html']

然后根據(jù)html_code構(gòu)造完整的html代碼,調(diào)用pdfkit.from_string()方法生成pdf文件,這時(shí)候會(huì)發(fā)現(xiàn)文章中的圖片在pdf文件中顯示出來(lái)了。

完整代碼

import os import pdfkit import datetime import wechatsogou  # 初始化API ws_api = wechatsogou.WechatSogouAPI(captcha_break_time=3)   def url2pdf(url, title, targetPath):     '''     使用pdfkit生成pdf文件     :param url: 文章url     :param title: 文章標(biāo)題     :param targetPath: 存儲(chǔ)pdf文件的路徑     '''     try:         content_info = ws_api.get_article_content(url)     except:         return False     # 處理后的html     html = f'''     <!DOCTYPE html>     <html lang="en">     <head>         <meta charset="UTF-8">         <title>{title}</title>     </head>     <body>     <h2 style="text-align: center;font-weight: 400;">{title}</h2>     {content_info['content_html']}     </body>     </html>     '''     try:         pdfkit.from_string(html, targetPath + os.path.sep + f'{title}.pdf')     except:         # 部分文章標(biāo)題含特殊字符,不能作為文件名         filename = datetime.datetime.now().strftime('%Y%m%d%H%M%S') + '.pdf'         pdfkit.from_string(html, targetPath + os.path.sep + filename)   if __name__ == '__main__':     # 此處為要爬取公眾號(hào)的名稱(chēng)     gzh_name = ''     targetPath = os.getcwd() + os.path.sep + gzh_name     # 如果不存在目標(biāo)文件夾就進(jìn)行創(chuàng)建     if not os.path.exists(targetPath):         os.makedirs(targetPath)     # 將該公眾號(hào)最近10篇文章信息以字典形式返回     data = ws_api.get_gzh_article_by_history(gzh_name)     article_list = data['article']     for article in article_list:         url = article['content_url']         title = article['title']         url2pdf(url, title, targetPath)

相關(guān)學(xué)習(xí)推薦:python教程

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
国产成人精品影院狼色在线| 国产精品久久久久aaaa| mm1313亚洲国产精品美女| 国产成人啪精品视频免费网| 欧美交A欧美精品喷水| 精品伊人久久大线蕉色首页| 老司机性色福利精品视频| 国产成人精品视频一区二区不卡| 成人午夜视频精品一区| 久久精品国产清自在天天线| 欲帝精品福利视频导航| 日韩在线不卡视频| 日韩精品久久久久久免费| 四虎永久在线精品免费影视| 国产精品久久精品视| 成人久久伊人精品伊人| 麻豆国产VA免费精品高清在线 | 人人妻人人澡人人爽人人精品电影| 亚洲乱码精品久久久久..| 99精品全国免费观看视频..| 精品久久久久久久中文字幕| 精品日韩在线视频一区二区三区| 69堂国产成人精品视频不卡| 亚洲福利精品一区二区三区| 夜夜爽一区二区三区精品| 免费在线观看日韩| 四虎永久在线精品国产馆V视影院| 精品一区二区三区无码视频| 老司机福利精品视频| www好男人精品视频在线观看| 亚洲国产精品尤物YW在线观看| 免费视频精品一区二区| 一本一本久久a久久精品综合麻豆 一本色道久久88综合日韩精品 | 一区二区精品在线| 99这里只有精品| 亚洲精品中文字幕麻豆| 亚洲男人的天堂久久精品 | 国产精品美女网站在线观看| 国产精品丝袜久久久久久不卡 | 香蕉视频国产精品| 亚洲а∨精品天堂在线|