【发布时间】:2012-05-22 10:02:46
【问题描述】:
我使用 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);
但是,也许我过于简化了?也许它可能适用于某些网站,但不适用于其他网站?有没有人做过并实现了类似的事情?
谢谢,
马诺杰
【问题讨论】:
-
如果你考虑使用 Python,有很多工具可以做这种事情。 (Selinium、Mechanize 等。)虽然速度可能是个问题,但启动和运行会更容易
-
支持 Indeera 的评论。除非您需要某种跨平台/设备兼容性(例如在移动设备上执行此操作),否则建议您使用 Python。我在 Python 中创建了所有与屏幕抓取相关的原型(使用 Urllib / Urllib2 / BeautifulSoup),并且仅在需要时转移到 libcurl 以在设备上使用。
标签: c web-scraping libcurl password-protection http-authentication