每日新闻软件可以帮助用户通过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)
1、打开每日新闻软件,点击获取按钮就可以直接将新闻获取
2、如图所示,在软件界面显示全部新闻内容,代表建议:明确伤人犬只饲养者刑责,可以阅读标题
3、可以将感兴趣的标题复制到浏览器搜索新闻内容,如果不感兴趣就可以直接关闭软件
4、软件获取的新闻都是每天更新的,让用户可以快速抓取新闻网站每天的热门内容
5、任意抓取到的内容都可以点击Ctrl+C复制使用,可以到浏览器查看新闻内容
6、直接查询新闻,点击搜索到的新闻就可以查看详细报告,如果你喜欢看新闻就可以下载使用
同类推荐
2020-12-22
立即下载2021-06-09
立即下载2022-03-15
立即下载2022-06-28
立即下载2022-07-09
立即下载2022-07-23
立即下载相关文章
Flash Game Master快捷键设置
2023-01-02腾讯电脑管家切换账号登录的方法
2023-01-02修改别人的易企秀的方法
2022-12-25CorelDRAW 2018如何把图片转换为曲线?
2022-12-18比特彗星下载种子文件的方法
2022-12-18BarTender 2021配置要求和技术规格一览
2022-12-18书旗小说App设置阅读背景的方法
2022-12-18VMware 14如何激活?VMware Workstation 14密钥下载
2022-12-18如何隐藏战绩?王者营地App隐藏战绩的方法
2022-12-04FFmpeg如何抓取屏幕?
2022-05-11