使用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抓取天涯帖子,并实现“只看楼主”功能相关推荐

  1. python 抓取天涯帖子内容并保存

    python 抓取天涯帖子内容并保存 作者:大捷龙 csdn : http://blog.csdn.net/koanzhongxue ** 分析:天涯的帖子下载可以分为以下几个步骤 手动传入一个帖子首 ...

  2. 实现sohu社区′只看楼主′的功能,抓取连载帖子中楼主的所有帖子

    sohu社区(http://club.sohu.com/main.php),经常有一些不错的连载的帖子,少则几千个回复,多则可以上万个,可是最有用最想看的楼主的帖子也就几十个,从这些成千上万的帖子中, ...

  3. Python爬虫实战(二):爬取天涯帖子(只看楼主)

    先上代码 #coding=utf-8 import requests from bs4 import Tag from bs4 import BeautifulSoup def getHtml(url ...

  4. python天涯帖子_python多线程抓取天涯帖子内容示例

    #coding:utf-8 import urllib import re import threading import os,time class Down_Tianya(threading.Th ...

  5. Python抓取百度贴吧网页信息以及代码下载

    代码是抓取百度贴吧帖子的回复内容的.包括帖子标题.帖子回复数量,帖子页码,回复楼层.回复时间,也可以只查看楼主的回复信息.最后将获取到的帖子信息记录到记事本中. 具体结果看图: 上面的图片打印的是帖子 ...

  6. python抓取网站图片_python抓取图片示例 python抓取网页上图片

    python抓取网页上图片 这个错误时是什么意思 下面是代码 import re import urllib.request imp正则表达式匹配的url有错误 for x in add: print ...

  7. python抓取贴吧_零基础写python爬虫之抓取百度贴吧代码分享

    这里就不给大家废话了,直接上代码,代码的解释都在注释里面,看不懂的也别来问我,好好学学基础知识去! # -*- coding: utf-8 -*- #------------------------- ...

  8. python代码案例详解-我用Python抓取了7000 多本电子书案例详解

    安装 安装很简单,只要执行: pip install requests-html 就可以了. 分析页面结构 通过浏览器审查元素可以发现这个电子书网站是用 WordPress 搭建的,首页列表元素很简单 ...

  9. python抓取头条文章

    python抓取头条美文并存储到mongodb # Author:song from multiprocessing import Pool from urllib.parse import urle ...

  10. 微信好友大揭秘,使用Python抓取朋友圈数据,通过人脸识别全面分析好友,一起看透你的“朋友圈”...

    微信:一个提供即时通讯服务的应用程序,更是一种生活方式,超过数十亿的使用者,越来越多的人选择使用它来沟通交流. 不知从何时起,我们的生活离不开微信,每天睁开眼的第一件事就是打开微信,关注着朋友圈里好友 ...

最新文章

  1. windows系统下Python环境的搭建
  2. linux脚本外输入参数,shell 脚本中关于用户输入参数的处理
  3. 计算机科学与技术第6次上机实验报告,计算机科学与技术第次实验报告-20210602214116.docx-原创力文档...
  4. 组合框CComboBox响应函数
  5. 函数中参数有数组时注意的小问题(不一定要传递数组长度,不用返回数组,可以在函数中改变数组元素值)
  6. w7鼠标计算机无法识别,win7电脑遇见usb鼠标无法标识的详细处理步骤
  7. c语言常用算法分析 微盘,C语言常用算法归纳.pdf
  8. matlab输出高质量图片,Matlab 画平滑轮廓 print 高质量 figure | 学步园
  9. 邓俊辉数据结构学习-8-2-B树
  10. HTML基础学习(菜鸟教程和W3school参考手册)
  11. java代理模式租房案例
  12. 汉字识别原理、方法与实现
  13. 项目管理的十大经典法则
  14. 随机产生一个五位数以内的数
  15. 中线提取算法_一种应用Visual Graph算法提取道路中线的专利_专利查询 - 天眼查...
  16. WIFI、路由器、猫、AP管理
  17. 【渝粤教育】电大中专计算机网络基础 (2)作业 题库
  18. 考研时间安排和考研内容
  19. 开机后我的计算机打不开,电脑开机后图标打不开怎么办
  20. 吸引力法则和《秘密》的理论其实不存在

热门文章

  1. 小程序分类图标提取_微信全国垃圾分类小程序上线,一键搜索轻松分类垃圾
  2. Autodesk 3ds Max 渲染之后保存页面卡死问题
  3. python自动排版公众号_GitHub - qfwc258/maxpress: MaxPress:MarkDown+Python实现微信公众号一键排版...
  4. Java全网最全面试题(2022年VIP典藏版)
  5. HTML颜色码对照表-英文代码、中文描述、十六进制、rgb值
  6. 微软模拟飞行10 简体中文豪华版 2DVD
  7. 原生js 判断数组是否为空
  8. 小米路由3c padavan固件
  9. 【C++】关于strlen函数使用的坑(与socket sendto函数配合使用)
  10. java生成zipf分布_统计分布-Zipf分布