【Python实战】用代码来访问1024网站

2023-05-16

1024是一个好网站

首先,此次实战系列的前提是您能科学的找到1024网站!我这里并不提供网站地址,特此声明,这里只是用计算机科学的态度和方法,来分析一个问题。和1024网站没有任何关联。

在1024网站上,不知道你是否和我一样,平时爱逛技术讨论区,爱看一些每日资讯总结的帖子,那么会不会因为板块的主题帖子是按照回复时间排序而找不到自己喜欢看的帖子而心烦意乱呢?是不是为了找自己今天没看过的帖子,而一遍又一遍的重新从头开始翻呢?

别怕,我都被这些问题困扰过!社区人口众多,帖子刷的很快,为了看到每天发布的帖子,板块的排版不得不让我每次进来都得从头开始找,看看哪个帖子今儿没看过。而且是左边看标题,右边看发布时间,好累啊。这样我不喜欢,有些浪费时间。

作为一个程序员,我觉得,这些问题,都是可以自己手动写一个Python爬虫来解决。

我感觉这个虫子全网***最方便***,最牛逼最便捷,***最能解决实际问题***的虫子!活学活用,真正的让代码方便我的生活,这才是我编写程序索要达到的目的

##我们现在遇到的问题: 论坛的帖子排序是按照回帖时间排序的,为了能够看到每天最新发布的帖子,总是得从头开始看整个论坛,很烦,浪费时间。

我们希望变成的样子

论坛的帖子按照时间发布顺序排列,这样看每天的新内容就很省事儿。

如果我们要写一个爬虫来解决的话,大致结构应该如下:

这里有几个部分:

  • config.json: 这个算是配置文件,目前需要填入的信息有: 1.1024网站的的URL 2.爬虫结果输出的的文件位置 3.爬虫需要爬的最大page num 4.板块信息,指论坛的板块名称(这个可以自定义)和板块的fid
  • Url_manager: 管理备爬取的URL。
  • Html_downloader: 爬虫获取网页信息。
  • Html_parser: 爬虫的网页解析器。
  • Html_output: 爬虫输出结果。

上面的结构很简单,那么简单的流程就是:我们先配置好本地的config.json文件,然后启动程序,爬虫会自动根据配置好的信息,然后抓取各个板块前几页的内容,根据帖子发帖时间,筛选爬出出来信息,随后,将获取到的信息按照时间排序,最后输出成html格式的文件,使用本地的网页浏览器打开。浏览器里面可以看到帖子的id,帖子的标题以及帖子的发布时间。通过点击帖子的标题,可以跳转到社区的帖子。

这样,内容丰富的小草网站,就直接变成了我们本地写的最简单的***html***文件。

我们整理后的网站首页:

新整理后板块长这个样子:

这样看上去,就简单和舒服的多了,不再需要像之前那样一个一个的找了。而且,我们看过哪个帖子,都是有不同颜色区分的。这样节省好多好多时间。下面就简单的说一下工程中运用到的技术点吧。

技术梳理

虽然现在网络上有很多成熟的爬虫框架,比如Scrapy,我之前也用过ScrapyScrapy确实强大,但是感觉这样体会不到爬虫的乐趣。所以干脆自己从零搭建一个爬虫。从零距离感受爬虫,感受Python的乐趣。

整体技术

  • python 3.6
  • requests
  • BeautifulSoup4
  • webbrowser
  • json

Config.json

这个是配置文件,将需要一些基本参数写在这个json文件中。先关的读取类是config_utils中的configreader

Url_manager

通过一个dict来存储板块名称和对应的板块URL,提供一些简答的方法来操作URL

Html_download

通过使用requests模块来进行网页的访问。从而拿到网页数据,为后面步骤的解析提供基础。
这里进行网络请求的时候,由于1024网站做了反爬处理,我添加了不同的HTTP header。目前还算比较好用。表头信息在user_agents文件中。

Html_parser

通过BeautifulSoup来对html做解析处理。每一个帖子都是有一个唯一id的。帖子都封装到CaoliuItem中,然后将结果输出到html_outputer中。这里是通过htmltag来做的寻找,并不是通过正则表达式。可能有点

Html_outputer

这个是将之前收集到的爬虫解析结果,整理成html文件的类。最终结果有一个index页面,每个版块还有自己的页面。他们之间相互链接在一起,点击起来爽爽的,炒鸡方便。

需要改进的地方 TODO

  • 整体结构虽然清晰,但是整体结构还需要优化。要做到像Scrapy那样强大的虫子,得一步一步来。
  • 目前爬虫能力比较弱,没有用到多线程爬虫。下一个版本可以加入多线程,这样既能提升速度,又能提升质量。
  • parser的解析还是太依赖网站的布局。若是网站布局发生改变,parser就得修改。这个问题是所有爬虫的通病,我还在想办法把这里做的更活一些,不要这么死板。
  • outputhtml文件美观度不够。
  • 下一版本,想将解析出来的东西,能够和MongoDB联动,算是本地保存一份吧。因为这样就能够看到之前的帖子信息。
  • 接下来应该最好是针对每个帖子,再爬一层,可以做到自动将图片或者种子文件下载下来。这个下载图片和种子的虫子我之前用Scrapy的时候做过,但是还是需要结合自己写的虫子比较好。
  • 最好能够将爬虫扩展到其他网站,比如微博啊,V2ex啊,之类的资讯网站。感觉每天来回逛这几个网站,打开这个打开那个,确实有时候挺浪费时间的,倒不如把它们每天更新的东西都整合成在一起,通过一个网站,一次看个够。这样多爽。
  • 最终的版本就是把这个程序做成一个后台服务,然后部署到服务器上,每天通过访问,能够看到当天各个网站的更新内容。做到 "访问一个,就可以访问全部" 的效果。

这个项目源码,欢迎STAR。

最后来一波福利,关注公众号:皮克啪的铲屎官,回复1024,能够找到你需要的东西哦~ ![关注并回复 1024 有惊喜](底部二维码.png

)

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

【Python实战】用代码来访问1024网站 的相关文章

  • netty 堆外内存泄露排查盛宴

    这篇文章对于排查使用了 netty 引发的堆外内存泄露问题 xff0c 有一定的通用性 xff0c 希望对你有所启发 背景 最近在做一个基于 websocket 的长连中间件 xff0c 服务端使用实现了 socket io 协议 xff0
  • 线程池工具类的封装

    了解更多学习 ThreadPoolExecutor类 ThreadPool java package com tool me thread import java util Hashtable import java util Map im
  • 【性能测试】利用IxChariot测试路由器吞吐量(wan to lan & lan to wan)

    写在前面 因项目原因 xff0c 本人对路由器吞吐量测试进行了学习探索 在学习过程中 xff0c 了解到IxChariot这一工具 xff0c 而在实践中 xff0c 也遇到一些问题 xff0c 花了较多时间去尝试和摸索 在此本人将这次实践
  • 通用文本标注工具 labelme

    欢迎大家前往腾讯云社区 xff0c 获取更多腾讯海量技术实践干货哦 作者 xff1a 理查德 导语 一个支持文本类目标注和关键词打分的通用标注工具 xff0c 为文本分类模型和关键词抽取任务提供训练和测试数据 by 慕福楠 amp 孙振龙
  • 干货|基于CPU的深度学习推理部署优化实践

    背景介绍 随着人工智能技术在爱奇艺视频业务线的广泛应用 xff0c 深度学习算法在云端的部署对计算资源 xff0c 尤其是 GPU 资源的需求也在飞速增长 如何提高深度学习应用部署效率 xff0c 降低云平台运行成本 xff0c 帮助算法及
  • Keycloak授权服务指南

    为什么80 的码农都做不了架构师 xff1f gt gt gt 本文译自Keycloak官方文档 xff0c 原文链接 对应版本为5 0 概述 Keycloak支持细粒度的授权策略 xff0c 并可以对这些策略进一步组合 xff0c 如 x
  • postgresql的substr()函数

    为什么80 的码农都做不了架构师 xff1f gt gt gt code select substr 39 1234 39 0 3 as re code 如果是pg xff1a 得到的结果是12 如果是oracle xff1a 得到的结果是
  • 【docker】查看docker镜像的版本号TAG,从远程仓库拉取自己想要版本的镜像

    要想查看镜像的版本好TAG 需要在docker hub查看 地址如下 xff1a https hub docker com r library 进入之后 xff0c 在页面左上角搜索框搜索 xff0c 例如搜索redis 搜索完成如下 xf
  • Windows下慎用内核隔离

    1 开启内核隔离后只能通过注册表关闭 2 开启内核隔离后 默认会启动hybrid v 这个东西和虚拟机是冲突的 这样就用不了虚拟机了 3 解决方法 关闭内核隔离后 再关闭已经开启的hybrid v 基本参考下面 可能要重复几次才能有效的关闭
  • EntLib 3.1学习笔记(4) : Logging Application Block

    zh http www microsoft com china MSDN library enterprisedevelopment softwaredev dnpag2logging mspx mfr 61 true en http ms
  • linux开机启动

    linux 有自己一套完整的启动体系 xff0c 抓住了 linux启动的脉络 xff0c linux的启动过程将不再神秘 阅读之前建议先看一下附图 本文中假设inittab中设置的init tree为 xff1a etc rc d rc0
  • 设置TextBox控件readOnly="True",后台无法取得客户端TextBox中值的解决方法

    在TextBox中设置属性 ContentEditable 61 34 false 34 即可 例 xff1a lt asp TextBox Id 61 34 txt DeptName 34 runat 61 34 server 34 Te
  • matlab练习程序(双边滤波)

    双边滤波模板主要有两个模板生成 xff0c 第一个是高斯模板 xff0c 第二个是以灰度级的差值作为函数系数生成的模板 然后这两个模板点乘就得到了最终的双边滤波模板 第一个模板是全局模板 xff0c 所以只需要生成一次 第二个模板需要对每个
  • hive:导出数据记录中null被替换为\n的解决方案

    在hive中 xff0c 一般情况下通过 1 use my hive db 2 set hive merge mapfiles 61 true 3 set hive merge mapredfiles 61 true 4 set hive
  • STP试验的综合应用

    实验环境 xff1a Catalyst 2950 24 S1 SwA S2 SwB S3 SwC S4 SwD 实验目的 xff1a 1 利用VTP协议实现VLAN配置的一致性 2 通过PVST的配置实现交换网络的负载分担 其次实现冗余备份
  • Ubuntu12.04LTS安装好后是空白桌面的解决步骤

    安装完毕启动后 xff0c 明显慢的要死 xff0c 登陆后竟然是一个空白的桌面环境 xff0c Ctrl 43 Alt 43 T 根本没有任何反应 唯一的反应就是右键能够创建文件和文档 同时打开的窗口没有最大化 xff0c 最小化及关闭按
  • could not execute menu item系统找不到指定的文件

    Wamp3 0 6 64bit xff0c 系统任务栏图标 xff0c 左键 xff0c Apache菜单 xff0c httpd conf xff0c 报错 could not execute menu item 系统找不到指定的文件 根
  • 这么好用的U盘数据恢复软件,推荐!

    U盘受到了用户不同程度的青睐 xff0c 可以将临时要用的数据输入到U盘中 但是U盘在使用过程中 xff0c 也会出现一些突发情况 xff0c 让用户措手不及 xff0c 其中最常见的就属数据丢失 数据丢失的原因包括多种 xff0c 误删除
  • node+微信小程序实现商城案例

    说明 xff1a 1 本人也是初次完整使用小程序 xff0c 如有BUG或者不足的地方请在Issues或者本文下方留言 xff0c 作者会尽快修改 xff0c 谢谢 xff01 2 本项目适合初学者或者准备自学小程序的伙伴 小程序功能 xf
  • SpringBoot使用fastjson的JsonField注解序列化Bigdecimal

    代码 lt xml version 61 34 1 0 34 encoding 61 34 UTF 8 34 gt lt project xmlns 61 34 http maven apache org POM 4 0 0 34 xmln

随机推荐

  • 网盘告急 亚信安全Safesync让企业级数据存储吃下“定心丸”

    近日 xff0c 两条重磅消息登上新闻头条 xff1a 一则是360云盘由于无法解决盗版侵权等问题 xff0c 将于2017年2月1日起关闭云盘 xff1b 另一则是百度遭到渔具店老板 撞库 xff0c 50万账号被盗后又遭转卖 xff0c
  • android内存泄漏分析的一种方式

    最近在处理项目的拷机问题 xff0c 发现在测试24小时内 xff0c 都是正常的 xff0c 但是超过24小时后 xff0c 重启一大片 xff0c 让人抓狂 分析了logcat打印 xff0c 发现重启是因为系统服务已经被watchdo
  • 29个运维经典面试题

    前言 这篇博文参考阿铭linux 28个运维经典面试题 xff0c 并对其中的一些题目进行扩展和解析 如有侵权 xff0c 请联系我删除 xff5e 再次感谢阿铭老师的分享 大家有空可以看看阿铭老师的教程 xff5e 第一题 xff1a L
  • win10下丢失msvcr110.dll解决办法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 笔者尝试过的方法 xff1a 方法一 xff1a 360安全卫士 功能大全 搜索区查找 xff1a msvcr110 dll xff0c 回车键结束 选择第一个 xff0c
  • moment.js格式化日期,获取前一个月的时间

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 下载moment js 格式化当前日期 xff1a 显示结果为 xff1a 34 2017 09 20 15 35 52 34 moment new Date format
  • 在springboot中配置web.xml

    在springBoot中配置web xml中配置的servlet http www cnblogs com wangxiaomei p 8885470 html 转载于 https www cnblogs com lxcmyf p 1006
  • SQL字符串处理函数大全

    select语句中只能使用sql函数对字段进行操作 xff08 链接sql server xff09 xff0c select 字段1 from 表1 where 字段1 IndexOf 34 云 34 61 1 这条语句不对的原因是ind
  • 设计模式之(十五)职责链Chain of Responsibility

    Chain of Responsibility定义 Chain of Responsibility CoR 是用一系列类 classes 试图处理一个请求request 这些类之间是一个松散的耦合 唯一共同点是在他们之间传递request
  • 如何判断一个C++对象是否在堆上

    摘要 在帖子 34 如何判断一个C 43 43 对象是否在堆栈上 中 xff0c 又有人提出如何判断一个C 43 43 对象是否在堆上 阅读全文 Richard Wei 2012 05 12 14 30 发表评论 转载于 https www
  • 前端框架Vue、angular、React的优点和缺点,以及应用场景

    学习web前端开发中 xff0c 会有很多的框架 xff0c 那么目前流行的框架有哪些 xff0c 以及他们的优缺点和应用场景有哪些呢 xff1f 一 Vue js xff1a 其实Vue js不是一个框架 xff0c 因为它只聚焦视图层
  • AFNetworking(二)AFNetworking对form-data请求体的处理

    AFNetworking 发送 GET POST 等请求时可以直接将参数按照字典结构传入 xff0c 最终编码到 url 中或者是 body 实体中 xff0c 同时也支持按照 multipart form data 格式 xff0c 将多
  • Android原生SpeechRecognizer(语音识别)

    开篇先吐槽下 xff0c 在Android 平台开发原生的SpeechRecognizer真是难受的 xff0c 不像ios xff0c 无比轻松 xff0c 平台统一 由于Android 平台的碎片化问题比较严重 xff0c 各个厂商都有
  • shell 读取配置文件

    shell 读取配置文件来取参数的值 在许许多多 自动化 的脚本中 很学用 bin sh filepath 61 34 home test test txt 34 while read LINE do user 61 96 echo LIN
  • MFC 获取本机IP地址(多个网卡)

    szHostName 128 gethostname szHostName hostent pHost i pHost gethostbyname szHostName i pHost pHost h addr list i i CStri
  • python 网站文件及数据库备份脚本

    初学python xff0c 试着写了一份python网站文件备份和数据库备份的脚本 xff0c 功能是写出来了 xff0c 但感觉还是不太适应 xff0c 写得不太好 xff0c 以后还要努力哈 xff01 backup py读取back
  • Qt实现串口通信总结

    Qt实现串口通信总结 注意 xff1a Qt5发布之前 xff0c Qt实现串口通信一般是采用第三方类库qextserialport Qt5发布后自带了QtSerialPort 能够支持串口通信 1 Qextserialport类介绍 在Q
  • 开发中状态到底用数字还是字符串

    做了这么多年网站发现 xff0c 一个遗留下来的习惯是否需要变变 就是在设计数据库及数据结构的时候 xff0c 我们已经习惯了用数字来表示 xff0c 例如 xff1a 0表示正常 xff0c 1表示删除 但是 xff0c 这么设计有几个好
  • org.springframework.expression.spel.SpelEvaluationException: EL1011E: Method call: Attempted to call...

    前言 本文中提到的解决方案 xff0c 源码地址在 xff1a springboot thymeleaf xff0c 希望可以帮你解决问题 至于为什么已经写了一篇文章thymeleaf模板引擎调用java类中的方法 xff0c 又多此一举的
  • (Access denied for user 'root'@'slaver1' (using password: YES))

    1 问题描述 xff0c 启动azkaban的时候报如下所示的错误 之前使用azkaban是root用户 xff0c 今天使用hadoop用户进行配置和使用 xff0c 报这个错 xff0c 说是root连接mysql拒绝了 1 hadoo
  • 【Python实战】用代码来访问1024网站

    1024是一个好网站 首先 xff0c 此次实战系列的前提是您能科学的找到1024网站 xff01 我这里并不提供网站地址 xff0c 特此声明 xff0c 这里只是用计算机科学的态度和方法 xff0c 来分析一个问题 和1024网站没有任