鱼C论坛

 找回密码
 立即注册
查看: 2593|回复: 2

[作品展示] 爬取微信公众号文章

[复制链接]
发表于 2020-3-19 14:08:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
自学了几天爬虫写的,有很多功能有想法不会做,哈哈啊哈哈。。。。。然后我想输出后为word文档然后输出后的格式和在网页上的一样,因为我正则表达式没怎么学会,提取中间文本提取不到。

                               
登录/注册后可看大图

  1. # -*- coding:utf-8 -*-
  2. import requests
  3. import  re
  4. from docx import Document


  5. headers= {
  6. "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12A365 MicroMessenger/5.4.1 NetType/WIFI"
  7. }
  8. #'User-Agent': 'python-requests/2.22.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'
  9. #requests.get()提取网页源码,返回一个对象
  10. duixiang = requests.get("https://mp.weixin.qq.com/s/lJPHTQADa_b9D7VAimx_3w",headers=headers)#微信公众号文章地址
  11. #print(duixiang.request.headers)
  12. #biaoti = re.split(r'[< h2class ="rich_media_title" id="activity-name" >(.*?)< / h2 >]',duixiang.text,1)
  13. biaoti=re.findall(r'<meta property="og:title" content="(.*?)" />',duixiang.text)#文章标题
  14. wenzhangfenzu=re.findall(r'[^\x00-\xff]',duixiang.text)#文章分组
  15. chuza_biaoti=re.findall(r'<strong class="profile_nickname">(.*?)</strong>',duixiang.text)
  16. chuza_gongneng=re.findall(r'<span class="profile_meta_value">(.*?)</span>',duixiang.text)
  17. chuza_buzhidao1=re.findall(r'var msg_desc = "(.*?)";',duixiang.text)
  18. yuansugeshu=len(wenzhangfenzu)
  19. """""
  20. range(start,end,step)
  21. start:指定计数起始值,可是省略,如果省略则从0开始,
  22. end:指定计数结束值(但不包括该值,如range(5)得到0~4的值,不包括5),不能省略,
  23. step:指定计数步长,即两个数直接的间隔;可以省略,如果省略表示步长为1,
  24. """""
  25. i=0
  26. wenzhang=""
  27. for i in range(0,yuansugeshu,1):
  28.     wenzhang=wenzhang+str(wenzhangfenzu[i])
  29.     i=i+1
  30. wenzhang=wenzhang.replace(chuza_biaoti[0],"")
  31. wenzhang=wenzhang.replace("微信公众平台","")
  32. wenzhang=wenzhang.replace("微信号","")
  33. wenzhang=wenzhang.replace("功能介绍","")
  34. wenzhang=wenzhang.replace(chuza_gongneng[1],"")
  35. wenzhang=wenzhang.replace(chuza_buzhidao1[0],"")
  36. wenzhang=wenzhang.replace(biaoti[0],"")
  37. wenzhang=wenzhang.replace("请求录制这里要加或才加载","")
  38. wenzhang=wenzhang.replace("阅读在看已同步到看一看写下你的想法前往“发现”“看一看”浏览“朋友在看”前往看一看看一看入口已关闭在“设置”“通用”“发现页管理”打开“看一看”入口我知道了已发送取消发送到看一看发送写下你的想法最多字,当前共字发送中相关阅读更多文章微信扫一扫关注该公众号微信扫一扫使用小程序取消允许取消允许知道了长按识别前往小程序","")
  39. print(wenzhang)


  40. #wenjianming=''.join(str(biaoti[0]))+".docx"
  41. """""
  42. with open(r'filename.txt') as f:
  43.    data_user=pd.read_csv(f)  #文件的读操作
  44. with open('data.txt', 'w') as f:
  45.    f.write('hello world')  #文件的写操作
  46. with open('data.txt', 'w') as f:
  47. r:        以只读方式打开文件。文件的指针将会放在文件的开头。这是**默认模式**。
  48. rb: 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
  49. r+: 打开一个文件用于读写。文件指针将会放在文件的开头。
  50. rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
  51. w:        打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
  52. wb:        以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
  53. w+:        打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
  54. wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
  55. a:        打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
  56. ab:        以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
  57. a+:        打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
  58. ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
  59.     """""
  60. #with open(wenjianming, "wb") as f:
  61. #if  f.write(duixiang.content)  :#文件的写操作
  62. """""
  63.     print("写出"+wenjianming+"成功!")
  64. else:
  65.     print("写出"+wenjianming+"失败!")

  66. word = Document(wenjianming)
  67. """""
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-19 19:31:42 | 显示全部楼层
感谢分享
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-19 20:51:40 | 显示全部楼层

嘿嘿
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-14 17:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表