需求:

想阅读微信公众号历史文章,但是每次找回看得地方不方便。

思路:

1、使用selenium打开微信公众号历史文章,并滚动刷新到最底部,获取到所有历史文章urls。

2、对urls进行遍历访问,并进行下载到本地。

实现

1、打开微信客户端,点击某个微信公众号->进入公众号->打开历史文章链接(使用浏览器打开),并通过开发者工具获取到cookies,保存为excel。

2、启动webdriver,并添加相应cookies。

browser = webdriver.Chrome()

wait = WebDriverWait(browser,10)

# 随便访问一个地址,然后才能设置cookies

browser.get('https://httpbin.org/get')

# 添加cookies,df为保存的excel cookies

for i in range(len(df)):

cookie_dict = {

"domain": df.loc[i,'DomaiN'],

'name': df.loc[i,'Name'],

'value': str(df.loc[i,'Value']),

"expires": df.loc[i,"Expires/Max-Age"],

'path': '/',}

browser.add_cookie(cookie_dict)

browser.get(weixin_url)

3、控制浏览器下移动

观察page_source,可以发现,文章到最底部的判断是。

已无更多

关注公众帐号,接收更多消息

使用driver控制JS。

%%time

# 通过判断已无更多的style,来判断是否到最底部,最终执行到最底部

no_more_msg_style = 'display: none;'

while True:

wait.until(EC.presence_of_element_located((By.XPATH,'//span[@class="tips js_no_more_msg" and text()="已无更多"]')))

no_more= browser.find_element_by_xpath('//span[@class="tips js_no_more_msg" and text()="已无更多"]')

now_style = no_more.get_attribute('style')

if str(now_style).find(no_more_msg_style) == -1:

# 说明已经加载完了

break

else:

# 停顿一会,等待浏览器加载

time.sleep(5)

# 通过JS,执行到最底部

browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')

4、关键信息获取。

根据html,分析得出文章url处在

中。

2017年1月13日

承认自己是难民有什么错

枷锁已经足够沉重,谢绝道德绑架

2017年1月13日

文章类型主要分为,

有无原创进行划分。

最终实现:

%%time

result = []

errlist = []

# 先得到其中一个

el_divs = browser.find_elements_by_xpath('//div[@class="weui_msg_card_list"]/div[@class="weui_msg_card js_card"]')

i = 0

for div in el_divs:

date = title = url = yuanchuang = ''

try:

date = div.find_element_by_xpath('.//div[@class="weui_msg_card_hd"]').get_attribute('innerHTML')

el_content = div.find_element_by_xpath('.//div[@class="weui_media_bd js_media"]')

if el_content.get_attribute('data-type') == 'APPMSG':

el = el_content.find_element_by_xpath('./h4[@class="weui_media_title"]')

title = el.text

url = el.get_attribute('hrefs')

xb = el_content.find_element_by_xpath('./p[@class="weui_media_extra_info"]').text

yuanchuang = '原创' if xb.find('原创') != -1 else ''

elif el_content.get_attribute('data-type') == 'TEXT':

title = '随文'

url = el_content.find_element_by_xpath('./div').text

yuanchuang = '原创'

else:

# 其他未能识别的类型

errlist.append([i,div.get_attribute('innerHTML')])

except NoSuchElementException:

errlist.append([i,div.get_attribute('innerHTML')])

print(str(i),':',date,title,url,yuanchuang)

result.append([date,title,yuanchuang,url])

i = i + 1

5、将得到url保存到excel

dfout = pd.DataFrame(result, columns=['日期', '标题', '原创', '地址'])

with pd.ExcelWriter(savename) as writer:

dfout.to_excel(writer,index=False,sheet_name = 'Sheet1')

最终保存形式

6、在遍历最后的链接地址,逐个requets保存,即可得到。组建成菜单形式的文章,可参考

遇到的坑:

1、find_element_by_xpath 需要配上 NoSuchElementException 使用,否则遇到未找到的节点就会出错,最初find_elements_by_xpath 来防止找不到相关节点,结果发现,执行速度异常的慢,需要查找原因。

2、cookies使用的时候是人为获取,如果太长时间不用,需要重新获取。可以考虑结合pyautogui来控制weixin客户端来进行获取。?

3、构建的时候,最后分布试行,最初的文章类型没有做好判断,结果执行时间很久。做好异常捕获,再逐步分析错误的节点问题。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python爬取论文代码_Python selenium爬取微信公众号文章代码详解相关推荐

  1. python下载微信公众号文章_python如何导出微信公众号文章方法详解

    1.安装wkhtmltopdf 下载地址:https://wkhtmltopdf.org/downloads.html 我测试用的是windows的,下载安装后结果如下 2 编写python 代码导出 ...

  2. python 公众号文章发布_python如何导出微信公众号文章方法详解

    1.安装wkhtmltopdf 下载地址:https://wkhtmltopdf.org/downloads.html 我测试用的是windows的,下载安装后结果如下 2 编写python 代码导出 ...

  3. python信息检索和评价系统_Python爬虫实现的微信公众号文章下载器

    所以我就想有什么方法能否将这些公众号文章下载下来.这样的话,看起来也方便.但是网上的方法要么太复杂(对于我这个爬虫入门新手来说),要么付费. 但我的需求其实却很简单--"方便的查找 / 检索 ...

  4. python write非法字符报错_Python爬虫实现的微信公众号文章下载器

    平时爱逛知乎,收藏了不少别人推荐的数据分析.机器学习相关的微信公众号(这里就不列举了,以免硬广嫌疑).但是在手机微信上一页页的翻阅历史文章浏览,很不方便,电脑端微信也不方便. 所以我就想有什么方法能否 ...

  5. python 下载公众号文章_Python爬虫实现的微信公众号文章下载器

    平时爱逛知乎,收藏了不少别人推荐的数据分析.机器学习相关的微信公众号(这里就不列举了,以免硬广嫌疑).但是在手机微信上一页页的翻阅历史文章浏览,很不方便,电脑端微信也不方便. 所以我就想有什么方法能否 ...

  6. python爬虫爬取公众号_Python selenium爬取微信公众号文章代码详解

    需求: 想阅读微信公众号历史文章,但是每次找回看得地方不方便. 思路: 1.使用selenium打开微信公众号历史文章,并滚动刷新到最底部,获取到所有历史文章urls. 2.对urls进行遍历访问,并 ...

  7. 构思编辑器教你如何不用代码排版出好看的微信公众号文章

    作为微信公众号运营人员之一,如何简单的进行微信文章内容编辑很重要.其中最主要的在于如何编辑出优美的文章并且文章的整体布局和排版都很美观.然而不是很多人都懂得如何使用代码去完成这些要求,那么不懂代码的运 ...

  8. Python 爬取微信公众号文章和评论 (有源码)

    关注我,一个仍存梦想的屌丝程序员,每天为你分享高质量编程博客. follow us for dream 关注我回复 "微信爬虫" 获取源代码 背景说明 感觉微信公众号算得是比较难爬 ...

  9. python 公众号爬虫_微信公众号文章爬虫

    很多的微信公众号都提供了质量比较高的文章阅读,对于自己喜欢的微信公众号,所以想做个微信公众号爬虫,爬取相关公众号的所有文章.抓取公众号的所有的文章,需要获取两个比较重要的参数.一个是微信公众号的唯一I ...

最新文章

  1. 在线视频解决方案供应商
  2. ML近三年在CVPR比较流行被应用的技术有哪些?
  3. python可以处理哪些文件_python文件处理
  4. ux和ui_设计社交餐厅策展应用程序— UX / UI案例研究
  5. Ocelot——初识基于.Net Core的API网关
  6. 前端学习(3093):vue+element今日头条管理-反馈
  7. python中long类型_浅谈python 四种数值类型(int,long,float,complex)
  8. 开启log4net内部调试
  9. QT不同线程间signal-slot机制的值传递
  10. gpio stm8 管脚 配置工具_STM8S 外设模块的GPIO引脚应该如何配置
  11. mysql中的where 1 1_SQL语句中where 1=1和where 1=0的作用
  12. 解锁WPS企业版,去广告,享会员服务
  13. java 裁剪图片_java实现的图片裁剪功能示例
  14. Mac在有S.M.A.R.T错误的情况下安装OSX系统
  15. Mac 下 Nginx、PHP、MySQL 和 PHP-fpm 的安装和配置
  16. 电子合同在什么情况下,法院不予认可
  17. Unity 摄像机切换镜头
  18. zigzag convert
  19. 单机网站服务器,端游【天之炼狱241】单机版一键端网单+GM工具
  20. iPhoneX无导航栏页面适配

热门文章

  1. 华为布局智慧屏的背后
  2. 你知道什么是 MySQL 的模糊查询?
  3. 苹果官网下架 iPhone 8 全系;阿里推出“阿里云会议”;深度操作系统 20 BETA 发布 | 极客头条...
  4. 清华学霸组团的工业 AIoT 创企再获数千万融资:玩家应推动在边缘 AI 芯片上跑算法...
  5. 腾讯会议开放API接口,为企业打造专属的“腾讯会议”
  6. 如何破解 Google Chrome 的隐身模式?
  7. GitHub Package Registry 发布!你依旧是那个我们所爱的 GitHub!
  8. 倒计时 4 天!年度开发者盛会 Unite Shanghai 2019 全日程揭晓(附表)
  9. 程序员如何内外兼修?
  10. World Leading!世界第二!百度云在吹牛?