1024是一个好网站html
首先,这次实战系列的前提是您能科学的找到1024网站!我这里并不提供网站地址,特此声明,这里只是用计算机科学的态度和方法,来分析一个问题。和1024网站没有任何关联。python
在1024网站上,不知道你是否和我同样,平时爱逛技术讨论区,爱看一些每日资讯总结的帖子,那么会不会由于板块的主题帖子是按照回复时间排序而找不到本身喜欢看的帖子而心烦意乱呢?是否是为了找本身今天没看过的帖子,而一遍又一遍的从新从头开始翻呢?git
别怕,我都被这些问题困扰过!社区人口众多,帖子刷的很快,为了看到天天发布的帖子,板块的排版不得不让我每次进来都得从头开始找,看看哪一个帖子今儿没看过。并且是左边看标题,右边看发布时间,好累啊。这样我不喜欢,有些浪费时间。程序员
做为一个程序员,我以为,这些问题,都是能够本身手动写一个Python爬虫来解决。github
##咱们如今遇到的问题: 论坛的帖子排序是按照回帖时间排序的,为了可以看到天天最新发布的帖子,老是得从头开始看整个论坛,很烦,浪费时间。web
论坛的帖子按照时间发布顺序排列,这样看天天的新内容就很省事儿。正则表达式
若是咱们要写一个爬虫来解决的话,大体结构应该以下:json
这里有几个部分:浏览器
上面的结构很简单,那么简单的流程就是:咱们先配置好本地的config.json文件,而后启动程序,爬虫会自动根据配置好的信息,而后抓取各个板块前几页的内容,根据帖子发帖时间,筛选爬出出来信息,随后,将获取到的信息按照时间排序,最后输出成html格式的文件,使用本地的网页浏览器打开。浏览器里面能够看到帖子的id,帖子的标题以及帖子的发布时间。经过点击帖子的标题,能够跳转到社区的帖子。服务器
这样,内容丰富的小草网站,就直接变成了咱们本地写的最简单的***html***文件。
咱们整理后的网站首页:
新整理后板块长这个样子:
这样看上去,就简单和舒服的多了,再也不须要像以前那样一个一个的找了。并且,咱们看过哪一个帖子,都是有不一样颜色区分的。这样节省好多好多时间。下面就简单的说一下工程中运用到的技术点吧。
虽然如今网络上有不少成熟的爬虫框架,好比Scrapy
,我以前也用过Scrapy
,Scrapy
确实强大,可是感受这样体会不到爬虫的乐趣。因此干脆本身从零搭建一个爬虫。从零距离感觉爬虫,感觉Python
的乐趣。
python 3.6
requests
BeautifulSoup4
webbrowser
json
这个是配置文件,将须要一些基本参数写在这个json文件中。先关的读取类是config_utils
中的configreader
。
经过一个dict
来存储板块名称和对应的板块URL
,提供一些简答的方法来操做URL
。
经过使用requests
模块来进行网页的访问。从而拿到网页数据,为后面步骤的解析提供基础。
这里进行网络请求的时候,因为1024网站
作了反爬处理,我添加了不一样的HTTP header
。目前还算比较好用。表头信息在user_agents
文件中。
经过BeautifulSoup
来对html
作解析处理。每个帖子都是有一个惟一id的。帖子都封装到CaoliuItem
中,而后将结果输出到html_outputer
中。这里是经过html
的tag
来作的寻找,并非经过正则表达式。可能有点僵。
这个是将以前收集到的爬虫解析结果,整理成html
文件的类。最终结果有一个index
页面,每一个版块还有本身的页面。他们之间相互连接在一块儿,点击起来爽爽的,炒鸡方便。
Scrapy
那样强大的虫子,得一步一步来。parser
的解析仍是太依赖网站的布局。如果网站布局发生改变,parser
就得修改。这个问题是全部爬虫的通病,我还在想办法把这里作的更活一些,不要这么死板。output
的html
文件美观度不够。MongoDB
联动,算是本地保存一份吧。由于这样就可以看到以前的帖子信息。Scrapy
的时候作过,可是仍是须要结合本身写的虫子比较好。这个项目源码,欢迎STAR。
最后来一波福利,关注公众号:皮克啪的铲屎官,回复1024,可以找到你须要的东西哦~ ![关注并回复 1024 有惊喜](底部二维码.png