每日新闻 v1.1
应用截图
应用介绍
每日新闻 v1.1 秀丽多群星灿烂天高云淡姿45. 先行一步,也许是冒险,但谁敢说,冒险不是一种智能,一种成功的契机。on behalf of 代表;express welcome to sb 对某人表示欢迎《战国策》68.前世之不忘,后事之师。
平时喜欢浏览新闻资讯的朋友如果想快速查看网页中的新闻内容,可以通过小编带来的这款每日新闻爬取软件来实现采集的操作,这是一个由python语言编写的爬虫工具,能够帮助用户轻松获取新闻网站中的数据,包括题目、内容、url等等,操作很简单,让用户直观地看到每天的新闻。
操作方法
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.q6. 从未奢想荣华富贵,能和爱我的人和我爱的人静静走过生命中所有的春夏秋冬,就是我唯一的、最大的奢侈。ueue.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(' loop_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)
软件测评
软件具备了强大的新闻网站爬取功能,可以用来采集新闻数据,直接一键将网页中的内容爬取出来,方便用户更好地查看每天的新闻资讯,免费绿色无广告。
上文就是小编为您带来的每日新闻(爬取新闻)了,更多精彩软件请多多关注霍普软件下载网。
伤高怀远几时穷?无物似情浓。离愁正引千丝乱,更东陌,飞絮蒙蒙。嘶骑渐遥,征尘不断,何处认郎踪?回看天际下中流,岩上无心云相逐。每日新闻,爬取新闻2.God helps those who help themselves. 天助自助者。