한국   대만   중국   일본 
? 停止焦?,?抱爬?|自然中?
停止焦?,?抱爬?
?于Nicholas DeVito、Georgia Richards 和Peter Inglesby??,?性化的??爬?正在高效地推?着他?的?究,同?也推?了他?的合作。
Nicholas J. DeVito,Georgia C. Richards & Peter Inglesby
doi:10.1038/d41586-020-02558-0 | 原文?接


??和?源?于?究??非常??。?像?据收集??普遍的任?自?化?使?目?得更?高效?可重?,?而提高生?率??果?出。最???得到一?可共享、可?用的?据收集工作流程,使得其他?究人?也可以??、使用和拓展?的?究成果,形成在?算上可?用的?据收集工作流。

pachong.jpg

?建??爬?工具?建立自己的在??究。?片?源:Shutterstock

我?在最近的?目中,通?分析一系列?尸?告 (https://www.judiciary.uk/subject/prevention-of-future-deaths/) ??助避免未??生死亡。整??目需要下?超? 3000 ? PDF 文件?搜索出?阿片相?的死亡,?是一??大的?据收集工作。在?其他??的?究人?探?后,我????是使用自?化方式?理的一??佳机?。???天的工作后,我?就?出了可以快速、高效、可?用的程序收集 PDF 文? (https://github.com/georgiarichards/opioiddeaths) ,??每一?案例?建出相?的?子表格。

我????常使用的??工具被?? ??爬? 。我?使用?去??床??注?中收集信息,?不??富 OpenPrescribing.net ?据,用于追踪英格?的初????方?据。如果?有爬?的?助,??是一?十分冗?甚至不可能完成的任?。

在?尸?告?目中,人工方式可以在一小??打??保存? 25 ??告,而?在程序可以在一小??打??保存下超? 1000 ??告,在?省大量的人工??的同?,?效率提高到了原先的 40 倍。更重要的是,??方式?通?共享?据集?造了新的?作机?,?能通?重新?行程序?持?追踪新?布的?告,不?更新?据集。

在?些????的基?上,我??在接下?的?容里?述爬?的基本知?,以及如何在?究中使用爬??提高科?效率。



 爬?如何?行?

??爬?是可以??站中抽取 ( 爬取 ) 特定信息的程序。??的??和?容通?超文本???言 (Hypertext Markup Language, HTML) ??行??,?可以通???器的 ?看源代? ??元素 ??看到(注:一般??器点?右? /F12 就能看到?看源代? / ??元素)。爬?可以理解 HTML ??其?行解析,?中抽取有用的信息。例如,?可以??一只抽取特定?域的信息的爬?,包括抽取在?文?或者下??接到本?面的文件。

通常??,一?典型的爬?程序需要?所有可能的 URL ?行迭代?理,例如?取? www.example.com/data/1 www.example.com/data/100 的?据,?保存每一?中?需要的?西,同??不?在抽取?程中引入人???的??。一旦程序完成??,?可以在任何?需要的?候重新爬取?据,不??需要假??站在?大多?情?下??保持不?。



如何着手?

?不是所有的爬?都需要?程。有?多像 webscraper.io ??的?件在??器中可以?箱?用,只需要点点鼠????面中感?趣的?容,??就能自?地?助?解析相?的 HTML ?容??出?需要的?据。

?一?稍微??的方式是?建自己的爬?系?,?然需要?手?代?,但是??予?更多的可控性。我?主要使用 Python ?建爬?系?,但任何?代爬??言都可以做到爬取?据  ( 具???, Python 一般使用 Request BeautifulSoup 包, R ?言?更多使用 rvest ) 。在?始?程前,可以先搜索是否有前人已???需要的?据源??爬?了,如果?有也不用?心,无????言在??上都有充足的免??程供???和理解,?助???出自己的爬?。

和大多??程一?,爬?的???然也免不了??的?程,不同的?站?有不同的?据???系和各?不同的 HTML ??形式。然而解???的?程却十分有益,?着?不?地解???,不?地克服困???化成?意?的一部分。

?得注意的是:爬?程序?行的??取?于爬取分析的?面?量、???接??以及?站服?器的性能,有的可能需要?天的??,所以在私有服?器上?行爬?程序?比?好。如果在自己的?人??上?行,?需要?保??不??入睡眠模式,中????接。同?也要仔??想爬?失?的原因,?仔?地??下爬?的日志信息,以便知道?些可行,?些不行,?些需要?一步深?。

WFH.jpg

三思而后行

?取?据容易?? ?ClinicalTrials.gov上每天爬取所有30多万??据,?于我?的FDAAA TrialsTracker(https://fdaaa.trialstracker.net/)?目而言是一?十分?大的任?,但幸?的是,ClinicalTrials.gov?他?的完整?据?放下?了;我?的?件只需要每天下?一次?放的?据集就好。我?的EU TrialsTracker?目就?有那?幸?了,所以我?要每月爬取EU registry(https://github.com/ebmdatalab/euctr-tracker-code)。

如果?有批量下??接,那就???站是否提供了?用程序接口(application programming interface, API)。API提供了?件??站直接?行交互的接口,而无需?求HTML?容。?直接爬取???容相比,??方式?更?便捷,但也?????外的API?用。我?在工作中?常使用PubMed API。此外,?可以??站??者直接?系,看看是否能?直接??提供?据。

?站是否可爬? 一些?站??有直接提供HTML形式的可用?据,需要更?先?的技???取?据(可以到StackOverflow等?答?站上?求?助)。?一些?站?有?入???和反DoS等反爬措施,增加了爬取的?度。?有少??站不想??人爬取,在?建?就不鼓?爬?。此外?多?站?提供了一套爬???在根目?下的robots.txt中,只有按照?些????站?行交互,才能?行有效的信息爬取。

?的程序是不是一只有?貌的爬?? ?的程序每一次向?站?求?据都需要?用?站的?源服?。?我?在??器中?????不??送太多?求,但是由程序??的爬?可以在一分??向服?器?送成百上千??求。??高??的???使得?站?行?慢甚至宕机(?繁的?求无意中成?了??站的DoS攻?)。?可能?使?的IP被?站??地、甚至永久地封禁??所以????可能地?少?于?站的???力。一方面可以在每次?求后?隔?秒,?一方面也可以在robots.txt中???站期望的?隔??。

?据是否有限制? 需要??抽取?据的版?或?可。一般情?下,?可以使用爬取的?据,但要共享?些?据?,就需要仔?考?是否符合法律法?。理想情?下,?站?提供??的?容?可?。但无??是否分享了?据,?都??在像GitHub??的?源社?公?的?的代?,?是?源文化???的重要部分,可以?其他有需要的人?松地?到、????展?的代?。

我?强烈推?更多的?究人???代???行?究,?向社?共享?些代?(https://stackoverflow.com/)。在?目中如果手工收集?据遇到困?,那?爬?也?是一?不?的解?方案,同?也是?好的入??程?目。爬?的??程度足?展示?件???程中的重要?容,但同?非常?富的?料也?初?者提供了充足的??信心。在??上????的代??外界?行交互,感?就像?有了?究超能力一?美妙,??在等什???

原文以 How we learnt to stop worrying and love web scraping ????表在 2020 9 8 日的《自然》??版?

ⓒ nature

doi: 10.1038/d41586-020-02558-0