我正在试验并尝试制作一个最小的网络爬虫。我非常了解整个过程。那么进入下一层细节,程序如何“连接”到不同的网站以提取 HTML?
我是否使用套接字连接到服务器并发送 http 请求?我是否向终端发出命令以运行 telnet 或 ssh?
另外,C++ 是网络爬虫的好语言吗?
谢谢!
我正在试验并尝试制作一个最小的网络爬虫。我非常了解整个过程。那么进入下一层细节,程序如何“连接”到不同的网站以提取 HTML?
我是否使用套接字连接到服务器并发送 http 请求?我是否向终端发出命令以运行 telnet 或 ssh?
另外,C++ 是网络爬虫的好语言吗?
谢谢!
另外,C++ 是网络爬虫的好语言吗?
依靠。你在 C++ 方面有多好。
C++ 是一种编写高级高速爬虫的好语言,因为它的速度(并且您需要它来处理 HTML 页面)。但它不是编写爬虫的最简单的语言,所以如果你正在试验,它可能不是一个好的选择。
根据您的问题,您没有编写高级爬虫的经验,因此可能正在寻找构建一个简单的串行爬虫。因为这个速度不是优先考虑的,因为瓶颈是通过网络下载页面(而不是页面的处理)。所以我会选择另一种语言(也许是python)。
如果您打算坚持使用 C++,那么您应该考虑使用libcurl库,而不是使用套接字从头开始实现 HTTP 协议。该库有可用的C++ 绑定。
来自 curl 的网页:
libcurl 是一个免费且易于使用的客户端 URL 传输库,支持 DICT、FILE、FTP、FTPS、Gopher、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、 SFTP、SMTP、SMTPS、Telnet 和 TFTP。libcurl 支持 SSL 证书、HTTP POST、HTTP PUT、FTP 上传、基于 HTTP 表单的上传、代理、cookie、用户+密码身份验证(Basic、Digest、NTLM、Negotiate、Kerberos)、文件传输恢复、http 代理隧道等等!
libcurl 是高度可移植的,它可以在多种平台上构建和工作,包括 Solaris、NetBSD、FreeBSD、OpenBSD、Darwin、HPUX、IRIX、AIX、Tru64、Linux、UnixWare、HURD、Windows、Amiga、OS/2、BeOs、Mac OS X、Ultrix、QNX、OpenVMS、RISC OS、Novell NetWare、DOS 等...
libcurl 是免费的、线程安全的、与 IPv6 兼容、功能丰富、支持良好、速度快、文档完整,并且已被许多知名、成功的大公司和众多应用程序使用。
简短的回答,不。我更喜欢用 C++ 编写代码,但这个实例需要 Java 应用程序。该 API 有许多 html 解析器以及内置的套接字协议。这个项目在 C++ 中会很痛苦。我曾经在 java 中编写过一个代码,感觉有点幸福。
顺便说一句,那里有很多网络爬虫,但我假设您有自定义需求:-)