使用python抓取天涯帖子,并实现“只看楼主”功能
使用python抓取天涯帖子,并实现“只看楼主”功能
在看天涯论坛时,有些帖子很有价值,想把它保存下来,可是好的帖子动辄几百页,其中又掺杂了很多灌水和撕逼,所以我编写了一个python小程序,将一个帖子中楼主所发的内容抓取下来,挺好用的。
唯一的缺陷是图片还没法抓取,以后有空再改进。
下面是程序代码,注释都在里面了:
#!/usr/bin/python
# -*- coding: utf-8 -*-# 天涯帖子下载,“只看楼主”from bs4 import BeautifulSoup
import codecs
import re
import requests
import time# 主下载函数
def download_post(home_page, link_prefix):# 打开文件filename = 'D:/temp/post.txt'f = codecs.open(filename, 'w', 'utf-8')########## 数据抓取 ##########headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36'}home_page_file = requests.get(home_page, headers=headers)home_page_file.encoding = 'utf-8'home_page_file = home_page_file.textsoup = BeautifulSoup(home_page_file, 'html.parser')########## 获取帖子总体信息,例如标题、作者、时间等 ########### 帖子标题post_title = soup.select('h1.atl-title > span > span')[0].string.strip()post_info = soup.select('div.atl-info > span')# 帖子作者post_author = post_info[0].select('a')[0].string.strip()# 帖子时间post_time = post_info[1].string[3:].strip()f.write(u'帖子标题:' + post_title + '\r\n')f.write(u'帖子作者:' + post_author + '\r\n')f.write(u'帖子时间:' + post_time + '\r\n\r\n')f.write(u'#################### 我是分隔线 ####################\r\n\r\n')########## 获取帖子的内容 ##########post_items = soup.select('div.atl-item')for i in range(len(post_items)):# 主帖,主帖和跟帖的区别是跟帖有js_username属性if not post_items[i].get('js_username'):post_content = unicode(post_items[i].select('div.bbs-content')[0])post_content = process_post_content(post_content)if post_content:f.write(u' ' + post_content + '\r\n\r\n')f.write(u'#################### 我是分隔线 ####################\r\n\r\n')# 跟帖else:# 只看楼主if post_items[i].get('js_username') == post_author:post_time = post_items[i].select('div.atl-info > span')[1].string.strip()f.write(u' ' + post_time + '\r\n\r\n')post_content = unicode(post_items[i].select('div.bbs-content')[0])post_content = process_post_content(post_content)if post_content:f.write(u' ' + post_content + '\r\n\r\n')f.write(u'#################### 我是分隔线 ####################\r\n\r\n')########## 处理翻页 ########### 获取翻页链接next_page = soup.select('div.atl-pages > form > a.js-keyboard-next')while next_page:next_page_href = next_page[0].get('href')########## 数据抓取 ##########home_page_file = requests.get(link_prefix + next_page_href, headers=headers)home_page_file.encoding = 'utf-8'home_page_file = home_page_file.textsoup = BeautifulSoup(home_page_file, 'html.parser')########## 获取帖子的内容 ##########post_items = soup.select('div.atl-item')for i in range(len(post_items)):# 只看楼主if post_items[i].get('js_username') == post_author:post_time = post_items[i].select('div.atl-info > span')[1].string.strip()f.write(u' ' + post_time + '\r\n\r\n')post_content = unicode(post_items[i].select('div.bbs-content')[0])post_content = process_post_content(post_content)if post_content:f.write(u' ' + post_content + '\r\n\r\n')f.write(u'#################### 我是分隔线 ####################\r\n\r\n')# 获取翻页链接next_page = soup.select('div.atl-pages > form > a.js-keyboard-next')# 关闭文件f.close()# 帖子内容处理函数
def process_post_content(post_content):post_content = post_content.replace('<div class="bbs-content clearfix">', '')post_content = post_content.replace('<div class="bbs-content">', '')post_content = post_content.replace('</div>', '')post_content = post_content.replace('<br/>', '\r\n')post_content = post_content.strip()return post_content# 天涯帖子首页,每次抓取帖子前修改这个值
home_page = 'http://bbs.tianya.cn/post-worldlook-703166-1.shtml'
# 翻页时,各页面链接需要加上的前缀
link_prefix = 'http://bbs.tianya.cn'download_post(home_page, link_prefix)
使用python抓取天涯帖子,并实现“只看楼主”功能相关推荐
- python 抓取天涯帖子内容并保存
python 抓取天涯帖子内容并保存 作者:大捷龙 csdn : http://blog.csdn.net/koanzhongxue ** 分析:天涯的帖子下载可以分为以下几个步骤 手动传入一个帖子首 ...
- 实现sohu社区′只看楼主′的功能,抓取连载帖子中楼主的所有帖子
sohu社区(http://club.sohu.com/main.php),经常有一些不错的连载的帖子,少则几千个回复,多则可以上万个,可是最有用最想看的楼主的帖子也就几十个,从这些成千上万的帖子中, ...
- Python爬虫实战(二):爬取天涯帖子(只看楼主)
先上代码 #coding=utf-8 import requests from bs4 import Tag from bs4 import BeautifulSoup def getHtml(url ...
- python天涯帖子_python多线程抓取天涯帖子内容示例
#coding:utf-8 import urllib import re import threading import os,time class Down_Tianya(threading.Th ...
- Python抓取百度贴吧网页信息以及代码下载
代码是抓取百度贴吧帖子的回复内容的.包括帖子标题.帖子回复数量,帖子页码,回复楼层.回复时间,也可以只查看楼主的回复信息.最后将获取到的帖子信息记录到记事本中. 具体结果看图: 上面的图片打印的是帖子 ...
- python抓取网站图片_python抓取图片示例 python抓取网页上图片
python抓取网页上图片 这个错误时是什么意思 下面是代码 import re import urllib.request imp正则表达式匹配的url有错误 for x in add: print ...
- python抓取贴吧_零基础写python爬虫之抓取百度贴吧代码分享
这里就不给大家废话了,直接上代码,代码的解释都在注释里面,看不懂的也别来问我,好好学学基础知识去! # -*- coding: utf-8 -*- #------------------------- ...
- python代码案例详解-我用Python抓取了7000 多本电子书案例详解
安装 安装很简单,只要执行: pip install requests-html 就可以了. 分析页面结构 通过浏览器审查元素可以发现这个电子书网站是用 WordPress 搭建的,首页列表元素很简单 ...
- python抓取头条文章
python抓取头条美文并存储到mongodb # Author:song from multiprocessing import Pool from urllib.parse import urle ...
- 微信好友大揭秘,使用Python抓取朋友圈数据,通过人脸识别全面分析好友,一起看透你的“朋友圈”...
微信:一个提供即时通讯服务的应用程序,更是一种生活方式,超过数十亿的使用者,越来越多的人选择使用它来沟通交流. 不知从何时起,我们的生活离不开微信,每天睁开眼的第一件事就是打开微信,关注着朋友圈里好友 ...
最新文章
- windows系统下Python环境的搭建
- linux脚本外输入参数,shell 脚本中关于用户输入参数的处理
- 计算机科学与技术第6次上机实验报告,计算机科学与技术第次实验报告-20210602214116.docx-原创力文档...
- 组合框CComboBox响应函数
- 函数中参数有数组时注意的小问题(不一定要传递数组长度,不用返回数组,可以在函数中改变数组元素值)
- w7鼠标计算机无法识别,win7电脑遇见usb鼠标无法标识的详细处理步骤
- c语言常用算法分析 微盘,C语言常用算法归纳.pdf
- matlab输出高质量图片,Matlab 画平滑轮廓 print 高质量 figure | 学步园
- 邓俊辉数据结构学习-8-2-B树
- HTML基础学习(菜鸟教程和W3school参考手册)
- java代理模式租房案例
- 汉字识别原理、方法与实现
- 项目管理的十大经典法则
- 随机产生一个五位数以内的数
- 中线提取算法_一种应用Visual Graph算法提取道路中线的专利_专利查询 - 天眼查...
- WIFI、路由器、猫、AP管理
- 【渝粤教育】电大中专计算机网络基础 (2)作业 题库
- 考研时间安排和考研内容
- 开机后我的计算机打不开,电脑开机后图标打不开怎么办
- 吸引力法则和《秘密》的理论其实不存在
热门文章
- 小程序分类图标提取_微信全国垃圾分类小程序上线,一键搜索轻松分类垃圾
- Autodesk 3ds Max 渲染之后保存页面卡死问题
- python自动排版公众号_GitHub - qfwc258/maxpress: MaxPress:MarkDown+Python实现微信公众号一键排版...
- Java全网最全面试题(2022年VIP典藏版)
- HTML颜色码对照表-英文代码、中文描述、十六进制、rgb值
- 微软模拟飞行10 简体中文豪华版 2DVD
- 原生js 判断数组是否为空
- 小米路由3c padavan固件
- 【C++】关于strlen函数使用的坑(与socket sendto函数配合使用)
- java生成zipf分布_统计分布-Zipf分布