0

我使用 libcurl 用 C 语言编写了一个网站爬虫,如果我们愿意,它可以从任何网站上抓取文本内容。

但是,我们需要的是能够抓取具有有效订阅的受密码保护的网站,例如大型新闻出版商。所以我们有这些网站的用户名/密码。

任何人都可以提供有关使用 libcurl 实现这一目标的建议。我知道您可以将用户名/密码添加到 libcurl 选项中。我认为这样做,只需访问可能受密码保护的正确页面,就可以了。这是 CURL 代码的摘录:

curl_easy_setopt(curlTestHandle, CURLOPT_URL, "mypasswordprotectedwebsiteurl");
curl_easy_setopt(curlTestHandle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
curl_easy_setopt(curlTestHandle, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(curlTestHandle, CURLOPT_MAXREDIRS, 5);

curl_easy_setopt(curlTestHandle, CURLOPT_USERPWD, "myusername:mypassword");

res = curl_easy_perform(curlTestHandle);
curl_easy_getinfo (curlTestHandle, CURLINFO_RESPONSE_CODE, &httpResponse);

但是,也许我简化了太多?也许它可能适用于某些网站,但不适用于其他网站?有没有人做过并实现了类似的事情?

谢谢,

马诺伊

4

1 回答 1

0

这取决于。如果站点为登录表单中的隐藏字段生成不同的编号,那么您必须解析(或简单搜索)HTML 文件以将隐藏字段附加到请求中。否则,您可以硬编码代码中的值。

这还取决于您要抓取多少个不同的网站。如果有很多不同的网站,那么最好的办法是解析 HTML(或以某种方式通过字符串搜索读取表单)并获取登录时要填写的字段。

您还必须阅读和设置 cookie。我认为 libcurl 应该具有轻松处理此问题的功能。

--- 我困了,我可能跑题了。如果这篇文章根本没有帮助,请告诉我删除它。

于 2012-05-22T10:12:28.493 回答