首页 / 知识
关于语言不可知:最好的库来进行网络抓取
2023-04-15 14:41:00

best library to do web-scraping我想从不同的网页获取数据,例如餐馆的地址或给定地点的不同活动的日期等等。 我可以用什么来从一组给定的站点中提取这些数据的最佳库? 如果使用python,请好好看看Beautiful Soup(http://crummy.com/software/BeautifulSoup)。 一个非常强大的库,使刮刮成为一件轻而易举的事。 HTML Agility Pack For .net程序员很棒。它可以转换XML文档中的网页,可以使用XPath进行查询。
你可以在这里找到它。 http://www.codeplex.com/htmlagilitypack 我认为这里的一般答案是使用任何语言+ http库+ html / xpath解析器。我发现使用ruby + hpricot提供了一个很好的清洁解决方案:
有关Hpricot的更多信息,请参阅http://code.whytheluckystiff.net/hpricot/ 我认为watir或selenium是最好的选择。大多数其他提到的库实际上是HTML解析器,这不是你想要的......你正在抓,如果网站的所有者想要你获取他的数据,他会把他的数据库或网站转储一个洪流,避免所有的http请求和昂贵的流量。 基本上,您需要解析HTML,但更重要的是自动化浏览器。这就是能够移动鼠标和点击,基本上真的模仿用户。你需要使用一个screencapture程序来访问验证码并将它们发送到decaptcha.com(解决它们只需几分钱)来规避它。忘记通过解析html来保存那个验证码文件,而不是在浏览器中呈现它,因为它应该被看到'。你是屏幕抓取,而不是httprequestscraping。 watir为我提供了与autoitx相结合的技巧(用于移动鼠标并在字段中输入键 - >有时这是设置正确的javascript事件的必要条件)和用于验证码的简单屏幕捕获实用程序。通过这种方式,您将获得最大的成功,编写一个出色的html解析器,发现该网站的所有者已将部分文本转换为图形,这是无用的。 (有问题?不,只需获取一个OCR库并提供jpeg,将返回文本)。除了我很少看到它们走得那么远,虽然在中国网站上,图形中有很多文字。 Xpath一直保存我的一天,这是一个很棒的领域特定语言(恕我直言,我可能是错的)你可以访问页面中的任何标签,虽然有时你需要调整它。 我错过的是'反向模板'(硒的机器人框架有这个)。 Perl在CPAN模块Template :: Extract中有这个,非常方便。 html解析,或DOM的创建,我会留给浏览器,是的,它不会那么快,但它会一直工作。 假装是Useragents的图书馆也是无用的,现在网站被保护免受抓取,并且在真实屏幕上呈现网站通常需要超越验证码,还需要触发信息显示等的javascript事件。 。 Watir如果你是Ruby,Selenium,其余的我会说。"人类模拟器"(或俄罗斯的网络模拟器)真的是为了这种刮擦而制造的,但是它再一次是来自一家毫不掩饰其意图的公司的俄罗斯产品。 我也认为Wiley这几周有一本关于刮擦的新书,应该很有趣。祝好运... 我个人喜欢WWW :: Mechanize Perl模块来完成这些任务。它为您提供了一个以典型Web浏览器为模型的对象(即您可以通过调用方法来跟踪链接,填写表单或使用"后退按钮")。
为了提取实际内容,您可以将其连接到HTML :: TreeBuilder,将您当前访问的网站转换为HTML :: Element对象树,并提取您想要的数据( 我个人发现http://github.com/shuber/curl/tree/master和http://simplehtmldom.sourceforge.net/非常好用于我的PHP spidering / scraping项目。 有很多答案推荐Perl Mechanize,但我认为Ruby Mechanize(非常类似于Perl的版本)甚至更好。它以语法上更清晰的方式处理表单之类的东西。此外,还有一些前端运行在Ruby Mechanize之上,这使得事情变得更加容易。 我会使用LWP(Libl for Perl)。这是一个很好的小指南:http://www.perl.com/pub/a/2002/08/20/perlandlwp.html
WWW :: Scraper在这里有文档:http://cpan.uwinnipeg.ca/htdocs/Scraper/WWW/Scraper.html LWP会为您提供基本的爬虫程序。 Perl WWW :: Mechanize库非常适合与网站交互以获取您需要的实际页面。 有人说。 使用任何语言。 只要你有一个很好的解析器库和http库,你就可以了。 树的东西比较慢,然后只使用一个好的解析库。 我推荐BeautifulSoup。它并不是最快的,但在大多数解析器所扼杀的(X)HTML页面的不良性方面表现得非常好。 您可以使用整洁将其转换为XHTML,然后使用您选择的语言提供的任何XML处理工具。 你想用什么语言? 用awk卷曲可能就是你所需要的。 |
最新内容
相关内容
linux打开网络命令?
linux打开网络命令?,网络,系统,地址,工作,信息,工具,管理,命令,基础,状态,Linux常用网络配置命令1、linux常用命令及用法linux常用命令如下:查linux网络修改命令?
linux网络修改命令?,地址,网络,系统,工作,服务,代码,管理,命令,工具,设备,Linux必学的网络操作命令Linux的网络命令比较多,其中一些命令像pinglinux使用命令改语言?
linux使用命令改语言?,系统,工作,管理,电脑,设备,字符集,中文,命令,语言,虚拟机,请问linux虚拟机装好以后怎么把英文改成中文?1、vmware设置中linux释放地址命令?
linux释放地址命令?,地址,系统,工作,信息,网络,命令,目录,基础,工具,管理,linux系统常用操作命令1、linux常用命令有pwd命令、cd命令、ls命令c语言写linux命令?
c语言写linux命令?,系统,工具,代码,智能,工作,环境,情况,位置,命令,文件,如何在C语言编程中调用linux系统终端下的命令1、C语言有一个system函linux网络基础命令?
linux网络基础命令?,工作,网络,系统,地址,信息,命令,工具,服务,基础,目录,Linux常用基本命令大全介绍1、linux常用命令: pwd命令 该命令的英文linux命令行关闭网页?
linux命令行关闭网页?,服务,系统,状态,管理,命令,进程,文件,模式,指令,主机,linux如何退出命令操作界面?如图,vi 文件名,接着按回车即可打开对应linux命令行网络流量?
linux命令行网络流量?,工具,系统,信息,网络,实时,状态,代码,服务,联通,号码,那个命令需要走流量1、云服务:使用云服务,如云存储、云计算等,也需要linux网络服务器命令?
linux网络服务器命令?,地址,网络,系统,名称,信息,工具,状态,中心,灵活,基础,linux系统下查看网关命令。linux查看网关命令,为您提供linux查看网linux获取地址命令?
linux获取地址命令?,地址,网络,信息,系统,设备,终端,命令,中心,管理,数字,linux怎么查看ip地址目录方法1:使用Ubantu(乌班图)界面右键点击通知区linux命令行ip地址?
linux命令行ip地址?,地址,系统,网络,信息,设备,电脑,密码,命令,服务,状态,linux配置ip地址1、首先进入到Linux系统中,输入用户名和密码完成登录linux汇编语言命令?
linux汇编语言命令?,系统,地址,代码,数据,网络,平台,平均,位置,灵活,工作,汇编语言指令的基本格式是什么1、有以下几种基本格式:标号,又称为指令