爬取帖子
时间:2019-11-06
本文章向大家介绍爬取帖子,主要包括爬取帖子使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
百度贴吧、爬取帖子的标题、发布时间和链接
1 import threading 2 import requests 3 import re 4 import os 5 6 # 百度贴吧 爬取帖子的标题、发布时间和链接 7 8 # 要搜索的贴吧名称 9 word = '文字控吧' 10 # 设置爬取页数 11 num = 5 12 13 14 # 获取详情页url和标题 15 def parse(word, pn): 16 r = requests.get('https://tieba.baidu.com/f', params={'kw': word, 'pn': pn}).content.decode() 17 article_urls = re.findall(r'<a rel="noreferrer" href="(/p/\d+)" title="(.*?)" target=', r, re.S) 18 print('正在请求中...') 19 return article_urls 20 21 22 # 发起请求 23 def parse_detail(article_urls): 24 for article_url in article_urls: 25 article_req = requests.get('https://tieba.baidu.com' + article_url[0]).text 26 if not re.findall(r'"userName":"(.*?)"', article_req, re.S): 27 print('未匹配到数据,这个正则不符合这个贴吧,需要重写正则') 28 continue 29 # 楼主 30 author = re.findall(r'"userName":"(.*?)"', article_req, re.S)[0] 31 # 发帖时间 32 crete_time = \ 33 re.findall(r'<span class="tail-info">1楼</span><span class="tail-info">(.*?)</span>', article_req, re.S)[0] 34 if author and crete_time and crete_time: 35 content = '楼主:{}\n标题:{}\n发布时间:{}\n链接:{}\n'.format(author, article_url[1], crete_time, 36 'https://tieba.baidu.com' + article_url[0]) 37 print(content) 38 # 写入文件 39 with open(word + '.txt', 'a')as f: 40 f.write('{}\n'.format(content)) 41 42 43 if not os.path.exists('百度贴吧'): 44 # 创建文件夹 45 os.mkdir('百度贴吧') 46 os.chdir('百度贴吧') 47 48 t_list = [] 49 for pn in range(0, num * 50, 50): 50 # 先获取详情页url和标题 51 article_urls = parse(word, pn) 52 # 对每一个详情页进行请求 53 t = threading.Thread(target=parse_detail, args=(article_urls,)) 54 t_list.append(t) 55 56 # 启动线程 57 for t in t_list: 58 t.start() 59 # 等待所有线程结束 60 for t in t_list: 61 t.join()
原文地址:https://www.cnblogs.com/jiyu-hlzy/p/11804167.html
- golang 使用时间通过md5生成token
- golang中对map操作类
- Nginx在线服务状态下平滑升级或新增模块的详细操作记录
- 【Dev Club分享】微信读书iOS性能优化
- [svn: E155004]svn update报database is locked错误的解决办法
- WordPress高亮插件:Crayon Syntax Highlighter加载优化
- 深入理解 ButterKnife,让你的程序学会写代码
- JS+CSS让网站嗨起来,博客要被玩坏了!
- Linux系统zip压缩命令详细参数,附文件排除选项的正确用法
- 浅谈Android自定义锁屏页的发车姿势
- 移动App入侵与逆向破解技术-iOS篇
- 启用WP Super Cache纯代码版本之后的一些优化措施
- WP Super Cache静态缓存插件纯代码版(兼容多域名网站)
- 【Dev Club分享】React Native项目实战总结。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Docker容器技术入门(一)
- 【容器技术】Docker容器技术入门(二)
- Mysql+Mycat实现数据库主从同步与读写分离
- 性能优化|Tomcat 服务优化
- zookeeper技术介绍
- Nosql数据库服务之redis
- 计算机网络基础:这是一份详细HTTP学习指南
- Docker容器技术之Docker file
- 学会这15点,让你分分钟拿下Redis数据库
- 服务器性能指标——负载(Load)分析及问题排查
- 这20个Docker Command,有几个是你会的?
- Redis 备份、容灾及高可用实战
- 容器技术|Docker三剑客之Compose
- ProxySQL+Mysql实现数据库读写分离实战
- 打造高逼格、可视化的Docker容器监控系统平台