【selenium

【selenium ,第1张

文章目录
  • 爬虫库
  • 本次任务
  • 具体情况
  • 一些方法
  • 代码

爬虫库

我目前接触到的爬虫库有scrapyrequests + Beautifulsoup or etree以及这个新遇到的selenium


其本质上的不同我并不是很了解,但是从调用的方式方法上来看,可以浅显地这么进行分类:

  • scrapy通过实现类的继承,通过对于自身方法的重写实现爬取动作。


    优势:快,非常快 ;缺点:难以调试,不好写 ;适用情形:大型爬虫项目

  • selenium的本身思路在于调动浏览器本身进行 *** 作,会加载各种的脚本渲染等,因此其缺点非常明显:慢,很慢,贼慢。


    但是正因为所有传递的信息都会经手,且通过调动庞大的浏览器结构,selenium可以完成人的任何 *** 作,包括点击、输入从而加载动态网页。


    适用情形:网页的结构多变,一些信息需要互动才能得到。


  • requests + ()在平时写小实验的时候用得比较多,其语法相对简单,逻辑容易理清。


    相对于上面两个来讲,requests包适用于静态网页,达不到selenium的灵活度但比他快,另一方面比scrapy要慢但好写。


    总体来讲是一个适合写小实验的库。


具体的实验可以参考这个网页。


本次任务
  • root paper: Highly accurate protein structure prediction with Alphafold 一篇Nature近几年来影响比较大的一篇文章,大致的核心是深度学习在生物蛋白质结构方面的应用。


  • 任务描述:以root paper为原点,向上(引用root paper的文献)查找数代的文献,向下(Reference)查找数代的文献。


    本质上是一个类似于树结构的形式,但是由于以root paper为起点,同一级的文献可能存在相互引用的情况从而形成一个闭环,所以从图论的定义上来看并不是一棵严格的树。


    但是毕竟是工程,数学上不必那么的严谨,达意是最重要的。


  • 爬取网站:非常不建议大家选取Web Of Science进行爬取,因为他的反爬做得太好的,各种空子补的也特别快。


    我在做的时候,一个3月17号可以用的接口在4月9号就被堵上了。


    建议大家找一些其他的网站哈,就不明指了,毕竟大型的文献搜索网页也就那么几个,自己试试就知道了。


具体情况

我要爬取的网页,其特点是每篇不一定会把文献或被引列在网站上,运气好或者名气比较大的文章可能会把其Reference以及Cited by放到网页里面查看,大部分不知名的小文章一般是没有这种待遇的。


这也是小网站的一个缺点吧,虽然好爬但是维护得比较差。


在爬的时候遇到的一些问题,在这里总结一下:

  1. 在通过seleniumwebdriver发送任何请求(get)以及搜索(find_element)的时候一定要用try...except语句,否则爬到一大半因为一时抽疯,或者由于网速原因页面没有及时更新导致崩溃,哭都没地儿去。


  2. driver定位某个数据的时候支持Xpath和CSS,但是我有一点必须提醒,也是我觉得在设计命名的时候非常不好的地方。


    其有两个方法:find_elementfind_elements,可以理解成scrapy shellresponseextract_firstextract的区别。


    前者拿第一个检索到的符合检索要求的元素,后者返回所有找得到的元素。


    仅仅拿一个s进行区分真的不好,自己在做与debug的时候也须注意。


  3. !!重要!!在通过Xpath定位的时候,如果是通过f12里点击右键–>复制–>复制Xpath的方式找到的Xpath,其通常有一个类似于数组里面的取位置的东西,比如//*[@id="b_results"]/li[3]/div[1]/h2/a里面的[3]和[1]。


    我不建议通过这种方式进行索引,特别当你的网页是动态的,并且不同网页之间结构上有着或多或少差别的时候,很有可能会出现检索不到或者检索的不是你想要的元素的情况。


    所以建议大家在第一步拿的时候去掉这些东西,并选择用class id的信息进行再筛选。


一些方法

driver的检索有几种方法,比如find_element_by_xpath或者find_element_by_css,但是在调用的时候会warning说这些都不要用啦,来用用这个find_element(by=,value=),然后调用By.XPATH来调用同一个功能,我的评价是脱裤子放屁,多此一举,写起来还麻烦。



后面有一些新想法了会再写写,截止到源代码提交完毕

代码

我们的小组作业这周二教,还请大家暂时包容,交完作业就分享源码 \doge

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/589721.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-13
下一篇 2022-04-13

发表评论

登录后才能评论

评论列表(0条)

保存