我正在尝试并尝试制作一个最小的网络爬虫。我在很高的层次上理解了整个过程。那么进入下一层细节,程序如何“连接”到不同的网站来提取HTML?
我是否在使用套接字连接到服务器并发送http请求?我是否向终端发出了运行telnet或ssh的命令?
另外,对于网络爬虫来说,C++是一个很好的选择吗?
谢谢!
发布于 2012-07-01 03:54:02
简而言之,不是。我更喜欢用C++编写代码,但是这个实例需要一个Java应用程序。该API有许多html解析器以及内置的套接字协议。这个项目在C++中将是一个痛苦的问题。我用java编写了一次,它有点令人愉悦。
顺便说一句,有很多网络爬虫,但我假设你有自定义需求:-)
发布于 2012-07-01 00:45:11
还有,C++是网络爬虫的首选语言吗?
视情况而定。你对C++有多在行。
C++是一种编写高级高速爬虫的好语言,因为它的速度很快(您需要用它来处理HTML页面)。但是用它来编写爬虫并不是最简单的语言,所以如果你正在进行实验,可能不是一个好的选择。
根据您的问题,您没有编写高级爬虫程序的经验,因此您可能希望构建一个简单的串行爬虫程序。因为这个速度不是优先考虑的问题,因为瓶颈是通过web下载页面(而不是页面的处理)。所以我会选择另一种语言(也许是python)。
发布于 2012-07-01 00:48:59
如果您计划继续使用C++,那么您应该考虑使用libcurl库,而不是使用套接字从头开始实现HTTP协议。有可用于该库的C++ bindings。
来自curl的网页:
libcurl是一个免费和易于使用的客户端网址转换库,支持DICT,FILE,FTP,FTPS,Gopher,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAP,POP3,POP3S,RTMP,RTSP,SCP,SFTP,SMTP,SMTPS,Telnet和TFTP。libcurl支持SSL证书、HTTP POST、HTTP PUT、FTP上传、基于HTTP form的上传、代理、cookies、user+password身份验证(基本、摘要、NTLM、协商、Kerberos)、文件传输恢复、http代理隧道等等!
libcurl是高度可移植的,它在许多平台上的构建和工作方式都是一样的,包括Solaris、NetBSD、FreeBSD、OpenBSD、Darwin、HPUX、IRIX、AIX、Tru64、Linux、UnixWare、HURD、Windows、Amiga、OS/2、BeOs、Mac、Ultrix、QNX、OpenVMS、RISC OS、Novell NetWare、DOS等等。
是免费的,线程安全的,兼容IPv6的,功能丰富,支持良好,速度快,文档完整,已经被许多知名的成功的大公司和许多应用程序使用。libcurl
https://stackoverflow.com/questions/11275765
复制相似问题