python多线程和协程的区别,python多进程和多线程协程

  python多线程和协程的区别,python多进程和多线程协程

  最近想找几本电子书,就随便翻了翻。然后,我找到了一个叫周度的网站。网站很好,简单清爽,书很多。另外,即使打开百度的网盘,也可以直接下载,更新速度也很不错。所以,我试着爬。就研究这篇文章吧。这么好的分享网站尽量不要抓取。影响人的访问速度不好。我是http://www.ireadweek.com/.想要数据的人可以在我的博客下评论。QQ,邮箱,什么都行。

  这个网站的页面逻辑非常简单。打开书的详细页面,如下图。我们只需要循环生成这些页面的链接,然后向上爬。为了速度,我用多线程。请试一试。如果你想要攀岩后的数据,在本博客下评论。请不要破坏别人的服务器。

  33558 week.com/index.PHP/bookinfo/11393.html

  33558 week.com/index.PHP/bookinfo/11.html。

  在线电子书多线程抓取代码

  代码非常简单。您可以使用前面的教程作为基础,用更少的代码实现完整的功能。将最后收集的内容写入csv文件。(csv是什么?百度一下就知道了。)这段代码是一个IO密集型操作。在aiohttp模块中创建。

  第一步

  连接URL并打开线程。

  导入请求

  #部署协作模块

  进口异步

  进口aiohttp

  headers={ user-agent : Mozilla/5.0(windows nt 10.0;WOW64 ) appleWebKit/537.36(khtml,像壁虎一样)chrome/68 . 0 . 3440 . 106 safari/537.36 ,

  主持人: www.ireadweek.com ,

  接受: text /XML,APP/XHTML XML,APP/XML。q=0.9,image/webp,image/apng,*/*;q=0.8}

  asyncdefget_content(URL):

  Print (in操作:(})。格式)(网址)))

  #创建一个会话来获取数据

  与aiohttp异步。ClientSession()作为会话:

  asyncwithsession.get(URL,headers=headers,timeout=3) as res:

  如果资源状态==200:

  Source=awaitres.text(#等待文本

  是,打印(来源)

  if __name__==__main__ :

  URL _ format= http://www . iread week.com/index.PHP/bookinfo/{ }。 html

  full _ URL list=[URL _ format . format(I)for iinrange(1,11394 ) ] # 11394

  loop=asyncio.get_event_loop(

  tasks=[获取完整url列表中URL的内容(URL)]

  results=loop . run _ until _ complete(异步io.wait)任务) )

  上面的代码可以同时打开N个以上的线程,但是很容易搞垮其他服务器,所以并发的数量一定要有限制。下面的代码试图将它放在自己指定的位置。

  SEMA=asyncio.semaphore(5)).

  #注意不要让爬虫一次提出太多请求。

  asyncdefx_get_source(URL):

  等待Ema:

  aitget_content(URL)).

  第二步

  处理捕获的web源代码并提取所需的元素。添加了使用lxml提取数据的方法。

  默认同步内容(树) :

  标题=树。XPath((/div ) ) class=杭航-za-title ) )0)。文本

  如果第#页没有信息,请直接返回。

  如果title==“”:

  返回

  否则:

  尝试:

  description=tree . XPath((/div))class=杭航-舒-内容-字体))

  作者=描述[0]。XPath (p [1]/text)) 0)。替换(作者:, )ifdescription)。XPath))

  Cate=描述[0]。xpath (p [2]/text)) 0)。替换))类别:“,”))ifdescription)。XPath)

  豆瓣=描述[0]。xpath (p [3]/text)) 0)。替换))豆瓣评分:, ))ifdescription )0)。路径语言

  #该部分内容不清楚,所以未记录

  # des=描述[0]。XPath(p(5)/text))0)if description)。XPath(p(5)/text ) ) 0

  下载=树。XPath((/a ) @class=downloads ))

  例外情况为e:

  是,打印(标题)

  返回

  ls=[

  标题,作者,美食,豆瓣,下载[0]。get(href ))))).

  ]

  返回LS

  第三步

  数据格式化后,保存为csv文件,工作完成!

  是,打印(数据)

  withopen(Hang。CSV , a ,编码=utf-8 )作为fw:

  是writer=CSV.writer(fw)

  Writer.write row (data))。

  打印(插入成功!)

  Python资源分享qun 784758214包含安装包、pdf和学习视频。这是一个Python学生的聚会,欢迎所有零学位和高级的学生。

  在线电子书多线程抓取-运行代码并显示结果。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: