
每日新闻(爬取新闻)是一款python爬虫之抓取网页新闻标题与链接的工具,每天上班想看看新闻,于是Python打包了一个可以一键点击查看新闻的exe,现在目的就是爬取有关这个关键词的网页文章,如题目、媒体、日期、内容、url。

利用python写爬虫的人越来越多,这也表明了用python写爬虫相比其它语言用起来更方便一些。很多新闻网站都没有反爬虫的策略,所以爬取新闻网站的数据就更加方便。
1 新闻源列表
本文要实现的异步爬虫是一个定向抓取新闻网站的爬虫,所以就需要管理一个定向源列表,这个源列表记录了很多我们想要抓取的新闻网站的url,这些url指向的网页叫做hub网页,它们有如下特点:
它们是网站首页、频道首页、最新列表等等;
它们包含非常多的新闻页面的链接;
它们经常被网站更新,以包含最新的新闻链接;
它们不是包含新闻内容的新闻页面;
Hub网页就是爬虫抓取的起点,爬虫从中提取新闻页面的链接再进行抓取。Hub网址可以保存在MySQL数据库中,运维可以随时添加、删除这个列表;爬虫定时读取这个列表来更新定向抓取的任务。这就需要爬虫中有一个循环来定时读取hub网址。
2 网址池
异步爬虫的所有流程不能单单用一个循环来完成,它是多个循环(至少两个)相互作用共同完成的。它们相互作用的桥梁就是“网址池”(用asyncio.Queue来实现)。
这个网址池就是我们比较熟悉的“生产者-消费者”模式。
一方面,hub网址隔段时间就要进入网址池,爬虫从网页提取到的新闻链接也有进入到网址池,这是生产网址的过程;
另一方面,爬虫要从网址池中取出网址进行下载,这个过程是消费过程;
两个过程相互配合,就有url不断的进进出出网址池。
3 数据库
这里面用到了两个数据库:MySQL和Leveldb。前者用于保存hub网址、下载的网页;后者用于存储所有url的状态(是否抓取成功)。
从网页提取到的很多链接可能已经被抓取过了,就不必再进行抓取,所以他们在进入网址池前就要被检查一下,通过leveldb可以快速查看其状态。
3. 异步爬虫的实现细节
前面的爬虫流程中提到两个循环:
循环一:定时更新hub网站列表
async defloop_get_urls(self,):print('loop_get_urls() start')while 1:
await self.get_urls()#从MySQL读取hub列表并将hub url放入queue
await asyncio.sleep(50)
循环二: 抓取网页的循环
async defloop_crawl(self,):print('loop_crawl() start')
last_rating_time=time.time()
asyncio.ensure_future(self.loop_get_urls())
counter=0while 1:
item=await self.queue.get()
url, ishub=item
self._workers+= 1counter+= 1asyncio.ensure_future(self.process(url, ishub))
span= time.time() -last_rating_timeif span > 3:
rate= counter /spanprint('\tloop_crawl2() rate:%s, counter: %s, workers: %s' % (round(rate, 2), counter, self._workers))
last_rating_time=time.time()
counter=0if self._workers >self.workers_max:print('====== got workers_max, sleep 3 sec to next worker =====')
await asyncio.sleep(3)
已更新排版好的exe
备案号:
开发者其他应用

复制历史 +(浏览器剪贴板管理插件)445KB31人在玩复制历史+(浏览器剪贴板管理插件)是一款管理你浏览器上面剪切板的插件,你在浏览器上面的复制历史都能够在这款软件查到,方便你随时的查看并且使用浏览器上面的复
下载
Wireshark(网络抓包工具)67.8M150426人在玩Wireshark是一款非常棒的Unix和Windows上的开源网络协议分析器。Wireshark中文版可以实时检测网络通讯数据,也可以检测其抓取的网络通讯数据快照文件。Wireshark中文版可以通过图形界面浏览这些数据
下载
CopyQ中文绿色版(一次复制多次粘贴)22.5M150人在玩CopyQ中文绿色版(一次复制多次粘贴)是一款简单方便的剪贴板增强管理工具,用户通过标签化的界面来实现多重管理剪贴板项目,对于粘贴大量的内容或者文字非常有帮助
下载
Danmaku Anywhere弹幕扩展机522KB10人在玩DanmakuAnywhere弹幕扩展是一款扩展城市,这款扩展程序能够在任何的视频网站当中为你进行弹幕的增加,你可以随时的在你的这些视频上面增加你所想要的互动,喜欢弹
下载
SaySnap文字卡片生成插件44KB7人在玩SaySnap文字卡片生成插件是一款插件程序,能够直接的在网页当中生成文字卡片,你在网页上面看到各种有趣的文字内容都能够通过这款SaySnap文字卡片生成插件来进行
下载
Paperlib插件75KB12人在玩Paperlib插件是一款插件工具,这款插件可以配合上软件一起进行使用,通过这款Paperlib插件来完成同步等多种内容,对于日常当中需要浏览各种文献内容的不要错过了
下载
vtab侧边栏tab管理器15KB5人在玩vtab侧边栏tab管理器是一款插件管理的程序,通过这款vtab侧边栏tab管理器来进行插件上面的管理,对于有着侧边栏上面管理需求的个人用户来说值得进行尝试,通过这
下载
PowerTabs标签页管理插件1000KB2人在玩PowerTabs标签页管理插件是一款标签页的管理的插件,通过这款PowerTabs标签页管理插件来管理你的标签页,让你快速的在浏览器上面找到自己所需要的标签页的内容,
下载
NopeCHA网页AI验证码识别插件132KB8人在玩NopeCHA网页AI验证码识别插件是一款AI插件,辅助个人来完成对于验证码上面的识别,通过AI的方式来辅助你识别网页上面的验证码的内容,让你在网页上面无需自己来填
下载
HelthPal便签插件643KB5人在玩HelthPal便签插件是一款插件程序,这是一款便签插件,在这款插件当中你可以通过网页来记录各种便签的内容,满足个人对于便签上面的记录的需求,对于有着便签记录
下载