爬北邮人论坛帖子

2023-05-16

爬北邮人论坛某个版块的帖子,存储为txt文件,因为是txt文件所以表情,图片去掉了

首先得到某一个版块的html代码,提取出每个帖子的url

计算每个帖子的页数,根据页数循环提取帖子每页的正文内容





代码如下:

#-*- encoding: utf-8 -*-
import requests
import os
import re

print '本脚本可以帮助您下载某个版块的帖子'+'\n'
boarddic = {}
boarddic['1']='Python'
boarddic['2']='AimGraduate'
boarddic['3']='Job'
boarddic['4']='Linux'
boarddic['5']='Feeling'
print '1 ---> Python'
print '2 ---> AimGraduate'
print '3 ---> Job'
print '4 ---> Linux'
print '5 ---> Feeling'
print 
boardnum = raw_input('请直接输入您所选择查询的版面数字(1-5): ')
board = boarddic[boardnum]
PAGE = int(raw_input('请输入您想下载的页数,一页代表最新的30篇帖子: '))

bourl = "http://bbs.byr.cn/board/" + board +"?p="

headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
           'Accept-Encoding': 'gzip, deflate, compress',
           'Accept-Language': 'en-us;q=0.5,en;q=0.3',
           'Cache-Control': 'max-age=0',
           'Connection': 'keep-alive',        
           'X-Requested-With': 'XMLHttpRequest',
           'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36' }

if(PAGE>=50):
    PAGE=50

i = 1
while( i<= PAGE):
    bbourl = bourl + str(i)
    print bbourl
    bbocont = requests.get(bbourl, headers=headers).content
    #find title url and name
    res = r'<td\sclass="title_9"><a\shref="(.*?)">(.*?)</a>'
    reg = re.compile(res)
    articletitle = re.findall(reg, bbocont)
    for art in articletitle:
        #print art[0]
        #print art[1]
        articleurl = "http://bbs.byr.cn" + art[0]
        print articleurl
        pathname = 'bbs.byr.cn/' + board + '/' + str(i)
        if os.path.exists(pathname):
            pass
        else:
            os.makedirs(pathname)
        filename = pathname +'/' + art[1].replace('?','').replace('.','')\
        .replace(':', '').replace('<', '').replace('>','').replace('|','')\
        .replace('*','').replace('/','').replace('\\','')+".txt"        

        if os.path.exists(filename):
            continue
        else:
            articlename = open(filename, 'w+')
        articlecontent = requests.get(articleurl, headers=headers).content
        #calculate page num
        regpage = r'<li\sclass="page-pre">.*?<i>(.*?)</i>'
        respage = re.compile(regpage)
        pagedata = re.search(respage, articlecontent)
        pageall = int(pagedata.group(1))
        #print pageall
        yushu = 0
        if (pageall%9) > 0:
            yushu = 1
        page = pageall/9 + yushu
        #print 'page=',page
        j = 1
        while page > 0:
            pageurl = articleurl + '?p=' + str(j)
            #print 'pageurl=',pageurl
            pagecontent = requests.get(pageurl, headers=headers).content
            regname = r'<span\sclass="a-u-name"><a\shref=".*?">(.*?)</a>.*?<div\sclass="a-content-wrap">(.*?)<font\sclass="f000"></font>'
            resname = re.compile(regname)
            namecontent = re.findall(resname,pagecontent)
            for nc in namecontent:           
                tempsrc = nc[1].replace('<br />', '\n').replace(' ', '  ')
                #remove picture
                resformat = r'<a.*?>.*?</a>'
                tempstr2 = re.sub(resformat, '', tempsrc)
                #remove font
                resformat2 = r'<font.*?>|</font>'
                tempstr3 = re.sub(resformat2, '', tempstr2)
                #remove img
                resformat3 = r'<img.*?/>'
                tempstr4 = re.sub(resformat3, '', tempstr3)
                sepe = '*'*40
                tempstr = sepe + '\n' + tempstr4 +'\n'
                #print tempstr
                articlename.write(tempstr)
            page -= 1
            j += 1
    i += 1
articlename.close()


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

爬北邮人论坛帖子 的相关文章

  • echarts自定义功能按钮图片 网络路径格式

    toolbox show true orient 39 vertical 39 x 39 left 39 top 39 20 39 feature myTool show true title 39 自定义扩展方法 39 icon 39 i
  • 上班摸鱼逛博客,逮到一个字节8年测试开发,聊过之后羞愧难当......

    老话说的好 xff0c 这人呐 xff0c 一旦在某个领域鲜有敌手了 xff0c 就会闲得某疼 前几天我在上班摸鱼刷博客的时候认识了一位字节测试开发大佬 xff0c 在字节工作了8年 xff0c 因为本人天赋比较高 xff0c 平时工作也兢
  • Ubuntu下USB权限问题以及udev规则文件笔记

    在ubuntu系统下使用传感器的时候 xff0c 通常会遇到一些权限上的问题 比如我使用ROS驱动包来启动bluefox摄像头 xff0c 如果没有任何关于权限上的处理就会提示权限问题导致无法正常启动该摄像头 xff0c 如下图 xff1a
  • 三.卡尔曼滤波器(EKF)开发实践之三: 基于三个传感器的海拔高度数据融合

    本系列文章主要介绍如何在工程实践中使用卡尔曼滤波器 分七个小节介绍 一 卡尔曼滤波器开发实践之一 五大公式 二 卡尔曼滤波器开发实践之二 一个简单的位置估计卡尔曼滤波器 三 卡尔曼滤波器 EKF 开发实践之三 基于三个传感器的海拔高度数据融
  • 树莓派 - 1 安装与配置 - a 系统安装(Raspbian)

    xff08 1 xff09 软件 Raspbian operating system https www raspberrypi org downloads raspbian Etcher SD card writing tool http
  • 分享一个Linux的录屏工具script

    在使用该命令后 xff0c 直接录屏 xff0c 会记录终端在命令行的所有动作 想让别人帮你操作 xff0c 但你的思路跟不上对方敲命令的速度 xff0c 可以先录下来 xff0c 然后回去慢慢琢磨 我的是centos7系统 span cl
  • 最佳Linux防病毒软件推荐!

    看到标题或许你会疑问 xff0c linux如此安全 xff0c 为什么我们还需要安装防病毒软件呢 确实 xff0c linux为全球超过70 的web服务器提供支持 xff0c 黑客极有动机来制造强大的病毒来渗透这些服务器安全系统 xff
  • NvidiaAGXXavier刷机Jetpack5.0.2报错记录(已解决,非搬运)

    网上有很多教程 xff0c 很详细的讲了这个板子刷机应该怎么去做 xff0c 正常的话就按照那个步骤走就可以了 xff0c 这里就不再赘述了 xff0c 但是我在给自己的NvidiaAgxXavier刷Jetpack5 0 2的时候 xff
  • Atmel Cortex-A5跑Nuttx是如此酸爽

    开源RTOS Nuttx已经支持Atmel SAMA5系列MPU xff0c 而且看到Nuttx还支持Graphic API xff0c 决定尝试在Ateml SAMA5D3 Xplained上跑下Nuttx Nuttx是一款开源RTOS
  • Using NuttX OS as a library on Atmel Studio 7

    This document explains how to add NuttX OS to your application on Atmel Studio 7 using NuttX OS as a library With Atmel
  • 【开发备忘】QGroundControl编译

    本文记录在windows下编译最新版QGC的过程 Qt版本为5 15 2 xff0c 编译器为MSVC2015 1 Qt环境配置 尽管目前已有Qt6 xff0c 但是QGC官网明确强调了仅可使用Qt 5 15 2 xff0c 因此首先需要安
  • Linux都应用在哪些领域?发展如何?

    与Windows操作系统软件一样 xff0c Linux也是一个操作系统软件 但与Windows不同的是 xff0c Linux是一套开放源代码程序的 xff0c 并可以自由传播的类UNIX操作系统软件 xff0c 随着信息技术的更新变化
  • opensuse 11.1 在线安装虚拟机 VirtualBox-2.2.4

    有些喜欢的windows软件可以用wine虚拟出来了 xff0c 比如酷狗 xff0c 但是有些就比较麻烦了 xff0c 比如中国特色的在线电影 xff0c 网银 xff0c 或许只有用虚拟机解决起来比较方面 xff0c 说句实在话 xff
  • Linux下CMakeLists.txt编译C++程序笔记

    在Linux下运用ROS系统可免去很多构建框架的步骤 xff0c 所以一般只要按照官网给的教程逐步进行即可 但是ROS自身有许多的毛病 xff0c 比如其稳定性和实时性差 xff0c 有时候数据传输会发现丢失的现象 xff0c 因此其性能不
  • px4: actuators control, control group 和 mixer科普

    原文链接 xff1a https pixhawk org dev mixing Control Mixing This page discusses the general purpose control mixing architectu
  • 如何用开源飞控PIXHAWK进行二次开发?

    著作权归作者所有 商业转载请联系作者获得授权 xff0c 非商业转载请注明出处 作者 xff1a 我是肉包子 链接 xff1a http www zhihu com question 38874663 answer 84239995 来源
  • px4的模式与状态

    一 模式 PX4 native flight stack String Description and notes MANUAL ACRO ALTCTL POSCTL OFFBOARD STABILIZED RATTITUDE in mas
  • ESP8266开发实战之(一)-开发环境配置

    最近买了一块ESP8266的小板子 xff0c 上面自带WIFI功能 xff0c 可以进行一些好玩的物联网开发 因此 xff0c 我打算将对整个板子的的熟悉过程通过一系列的文档记录下来 我拿到的板子型号是NodeMUC 1 0 ESP 12
  • ESP8266开发实战之(4)-连接路由器的wifi

    概述 ESP8266支持连接到wifi xff0c 从而使得我们能够通过网络访问 xff0c 做出一些简单而有趣的功能 因此 xff0c 第一步工作便是连接到wifi网络 一般情况下 xff0c 我们要连接wifi xff0c 在手机上的操
  • 怎样用一行代码判断系统的大小端?

    最近在设计自己的TCP IP协议栈 xff0c 代码完成的差不多了 xff0c 已经能够跑在嵌入式STM32开发板上 闲来无事 xff0c 想着优化一下问题的解决方案 这个问题据说是很常见的面试问题 xff1a 如何判断当前系统的大小端 x

随机推荐

  • 在操作系统开发中选bochs还是qemu

    最近有同学问我 xff1a 为什么你在写 0写x86 Linux操作系统时选择了bochs xff0c 而不是qemu xff1f 他认为bochs更加好用 xff0c 很多资料上都写了用该软件 其实我也是经过不断地对比和尝试后 xff0c
  • 网络编程中的大小端

    最近在录制一门手写TCP IP协议栈的课程 不得不说 xff0c TCP IP这个东西是真难 xff0c 写代码费了我半天劲 xff0c 然后又要用课程的方式给讲出现 这其中涉及到大小端的转换 xff0c 所以这里总结一下 在计算机领域 x
  • RTOS系统延时与普通软延时的特点与区别

    我们知道 xff0c 在RTOS中会提供若干延时函数的API 对于没有仔细了解过RTOS的同学而言 xff0c 可能会产生这样疑惑 xff1a 这些API与普通自写的延时函数相比究竟有何优势呢 xff1f 为什么要额外提供这些API xff
  • 超简单!在Keil中指定某个函数或变量存放的地址

    在我们开发过程中 xff0c 有时候会有这样一个需求 xff1a 希望能够指定某个函数或变量存放的地址 也许你看过一些文章 xff0c 里面介绍了一大堆内容 xff0c 甚至于还会介绍分散加载文件的配置 但是绝大多数情况下 xff0c 为了
  • 解决Ubuntu环境下ROS Kinetic中的cv_bridge和自己安装OpenCV 2.4.xx兼容性笔记

    我们如果使用的ROS版本为Kinetic xff0c 那么ROS一般会默认安装OpenCV3 所以使用cv bridge的情况下 xff0c ROS会自动去调用它自己安装的OpenCV3 但是对于一部分人还是比较习惯使用OpenCV2 xf
  • 自己动手从0到1写嵌入式操作系统-李述铜-专题视频课程

    自己动手从0到1写嵌入式操作系统 7941人已学习 课程介绍 这不是rtos源码分析的课程 xff0c 而是为初级的同学设计 xff0c 从基础原理讲师 xff0c 一步步不断迭代设计rtos的课程 xff01 用不到 2000行代码 xf
  • opencv基于颜色的物体识别

    span style font size 18px include lt iostream gt include lt string gt include lt string h gt include lt vector gt includ
  • c++模板(函数模板、类模板)STL、map、容器

    一 什么是模板 模板是C 43 43 中自动生成代码的技术 二 为什么使用模板 问题 xff1a 实现一个通用的排序算法 C语言 xff1a 通过回调函数实现 xff0c 使用者调用麻烦 C 43 43 语言 xff1a 函数重载 xff0
  • iPad 上最强 IDE,支持 20 多种开发语言,还开源了

    x1f447 x1f447 关注后回复 进群 xff0c 拉你进程序员交流群 x1f447 x1f447 作者丨小集 来源丨小集 xff08 ID xff1a zsxjtip xff09 https mp weixin qq com s 3
  • 如何删除Docker镜像

    Docker镜像不过是一组只读文件 xff0c 这意味着一旦docker镜像被构建 xff0c 就不能修改 然而 xff0c 你可以借助现有的docker镜像创建一个新的docker镜像 Docker镜像是用来构建docker容器的 Doc
  • 如何减少/缩小Linux中的LVM(逻辑卷大小)?

    减少 缩小逻辑卷会给数据非常大的损坏风险 所以 xff0c 如果可能的话 xff0c 尽量避免这种情况 xff0c 但如果没有其他选择的话 xff0c 只能这样操作了 缩减LVM之前 xff0c 建议先做一个备份 当你在LVM中的磁盘空间耗
  • 是结束也是开始

    往事随风 时光飞逝 xff0c 不知不觉已答辩完 xff0c 不知不觉已毕业 xff0c 不知不觉告别了生活四年的学校 告别了一起的你们 xff0c 不知不觉踏上了返程的火车 xff0c 不知不觉已回到了家 xff0c 坐在电脑旁边 xff
  • 目标检测光流法(一):对光流法的认识

    所谓光流 xff0c 是计算机视觉研究领域的术语 xff0c 直观的认识就是提供一个对运动物体的的描述 xff0c 因此也常用于运动物体的检测与识别 现实生活中 xff0c 我们之所以能感受到物体的动与不动 xff0c 就是因为这个物体在前
  • 机器学习(1)--特征工程之特征抽取

    三者关系 xff1a 人工智能 gt 机器学习 gt 深度学习 机器学习 xff1a 机器学习是从数据中自动分析获得规律 xff08 模型 xff09 xff0c 并利用规律对未知数据进行预测 机器学习的数据 xff1a 文件csv xff
  • VScode配置makefile编译

    VScode配置makefile编译 Author xff1a onceday date xff1a 2022年7月26日 1 修改终端任务配置 Terminal span class token punctuation span span
  • Windows 7+Ubuntu 16.04双系统安装以及重装windows7为windows10

    安装双系统先明白自己系统的配置 xff08 将要怎么去划分 xff09 但遵循一个原则 xff0c 就是两个系统一定要将系统引导分别放在不同的盘 xff0c 也就是划分一个 空闲盘单独给Ubuntu安装 后面无论你是升级windows7 还
  • Clang-format格式化及配置参数

    Clang format格式化C代码 Author xff1a Once Day Date xff1a 2022年11月3日 漫漫长路有人对你微笑过嘛 参考文档 xff1a Clang Format Style Options Clang
  • 写下2011,展望2012

    一年又过去了 xff0c 好快 xff0c 写个总结 xff0c 也算是对这一年有个交代吧 一 上半年 xff1a 专心科研 总的来说 xff0c 上半年还是过得比较惬意的 xff0c 安心做科研 xff0c 主要还是做wince 嵌入式开
  • 有人说

    1 只要123 xff0c 不要456 xff1a 麦肯锡要求公司员工 xff0c 凡事要在最短的时间内表达清楚 他认为 xff0c 一般情况下人们最多记得住一二三 xff0c 记不住四五六 xff0c 所以凡事要归纳在3条以内 2 职场要
  • 爬北邮人论坛帖子

    爬北邮人论坛某个版块的帖子 xff0c 存储为txt文件 xff0c 因为是txt文件所以表情 xff0c 图片去掉了 首先得到某一个版块的html代码 xff0c 提取出每个帖子的url 计算每个帖子的页数 xff0c 根据页数循环提取帖