首页 > 编程语言 >C++编程爬虫代码全过程分享

C++编程爬虫代码全过程分享

时间:2023-11-13 17:04:05浏览次数:45  
标签:opt setOpt curlpp 编程 爬虫 C++ Header curl options

以下是使用C++编写一个爬虫程序的基本步骤和代码示例:

C++编程爬虫代码全过程分享_ios

1、首先,我们需要包含必要的库文件。在这个例子中,我们将使用<iostream><string><curlpp/cURLpp.hpp>库。

#include <iostream>
#include <string>
#include <curlpp/cURLpp.hpp>
#include <curlpp/Easy.hpp>
#include <curlpp/Options.hpp>

2、接下来,我们需要定义一个Proxy结构体来存储爬虫IP信息。

struct Proxy {
    std::string proxy_host;
    int proxy_port;
};

3、然后,我们需要定义一个Book结构体来存储爬取到的图书信息。

struct Book {
    std::string title;
    std::string author;
    int publish_year;
};

4、在主函数中,我们首先初始化curlpp库,然后创建一个Easy对象。

int main() {
    curlpp::Option<std::string> opt_url("目标网站");
    curlpp::Option<std::string> opt_proxy_host("www.duoip.cn");
    curlpp::Option<int> opt_proxy_port(8000);
    curlpp::Option<bool> opt_verbose(true);
    curlpp::Easy curl;

    curl.setOpt(opt_url);
    curl.setOpt(opt_proxy_host);
    curl.setOpt(opt_proxy_port);
    curl.setOpt(opt_verbose);

5、然后,我们设置爬虫IP服务器。

curl.setOpt(curlpp::options::Proxy("http"));
    curl.setOpt(curlpp::options::ProxyType(curlpp::options::ProxyType::HTTP));
    curl.setOpt(curlpp::options::ProxyAuth("Basic", "username:password"));

6、接下来,我们设置要爬取的网页。

curl.setOpt(curlpp::options::Url("目标网站"));

7、然后,我们设置要爬取的页面类型为HTML。

curl.setOpt(curlpp::options::Header("Accept", "text/html"));

8、接下来,我们设置要爬取的页面编码为UTF-8。

curl.setOpt(curlpp::options::Header("Accept-Encoding", "gzip, deflate, br"));
    curl.setOpt(curlpp::options::Header("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8"));

9、然后,我们设置要爬取的页面内容类型为HTML。

curl.setOpt(curlpp::options::Header("Content-Type", "application/x-www-form-urlencoded"));

10、接下来,我们设置要爬取的页面长度。

curl.setOpt(curlpp::options::Header("Range", "bytes=0-"));

11、然后,我们设置要爬取的页面编码。

curl.setOpt(curlpp::options::Header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"));

12、接下来,我们设置要爬取的页面编码。

curl.setOpt(curlpp::options::Header("Content-Length", "0"));

13、然后,我们设置要爬取的页面内容类型为HTML。

curl.setOpt(curlpp::options::Header("Content-Type", "application/x-www-form-urlencoded"));

14、接下来,我们开始执行请求。

curl.perform();

15、然后,我们检查请求是否成功。

if(curl.isSuccess()) {
        std::cout << "Success!" << std::endl;
    } else {
        std::cout << "Failed!" << std::endl;
    }

16、最后,我们释放资源。

curl.clearOptions();
    curl.close();
    return 0;
}

以上就是使用C++编写一个爬虫程序的基本步骤和代码示例。请注意,这只是一个基本的示例,实际的爬虫程序可能需要处理更复杂的情况,例如处理动态网页、处理JavaScript代码、处理登录验证等。此外,爬虫程序也需要注意法律和道德问题,尊重网站的robots.txt协议,不进行恶意爬取,不侵犯网站的版权。

标签:opt,setOpt,curlpp,编程,爬虫,C++,Header,curl,options
From: https://blog.51cto.com/u_13488918/8346186

相关文章

  • 实验4 C语言数组应用编程
    一、实验目的能正确使用c语法规则定义、初始化、访问、输入/输出一维/二维数值型数组能正确使用c语法规则定义、初始化、访问、输入/输出一维/二维字符数组能正确使用数组作为函数参数能熟练使用常用的字符串处理函数针对具体问题场景,能灵活用数组组织数据,应用、设计算法编......
  • 编程最佳外挂:批量数据分析与可视化,CodeGeeX工具箱一键完成
    ChatGLM3代模型的CodeInterpreter能力,本周已经在VSCode里的CodeGeeX插件产品中,以开发者工具箱的产品形态上线。下图以VSCode插件为例:在CodeGeeX的侧边栏,和智能问答AskCodeGeeX并列出现的工具箱标签,用户登录后就可以直接打开使用。CodeInterpreter曾被称为ChatGPT最强外挂。现......
  • 【1111算法题】蓝桥杯 c++(一)第一二题
    【1111算法题】第一题双十一的祈祷【算法赛】题目双十—,不仅是购物狂欢节,更有"光棍节"之称。这源于11:11由四个1构成,象征着单身。作为大学生的小蓝也想经历甜甜的校园恋爱,于是他找到了爱神丘比特,向他祈祷能为自己带来—段邂逅。丘比特是乐于助人的,他承诺小蓝只要回答出一个简......
  • Netty(二)文件编程
    Netty(二)文件编程1FileChannel不能够直接打开FileChannel,只能够通过FileInputStream、FIleOutPutStream和RandomAccessFile的getChannel()方法来获取FileChannelFileInputStream获得的channel只能读FIleOutPutStream获得的channel只能写RandomAccessFile是否能读写需要根据......
  • Netty(三)网络编程
    Netty(三)网络编程1阻塞和非阻塞堵塞:在没有数据可读的时候,包括数据复制的过程,线程必须堵塞等待,不会占用CPU但是线程相当于闲置在单线程下,两个堵塞的方法会相互影响,必须使用多线程,32位JVM一个线程320K,64位JVM一个线程1024K,为了减少线程数,需要采用线程池技术但是即便使用了线......
  • python爬虫实战-小说爬取
    python爬虫实战-小说爬取基于requests模块与lxml模块编写的爬虫,目标小说网站为https://www.hongxiu.com/category/基本思路主要内容分为三个部分使用requests模块获取网页内容使用lxml模块进行网页解析将解析出来的数据存储进MySQL数据库中获取网页内容网站分析......
  • Rust写的爬虫代码抓取精美的图片
    Rust是一种系统级编程语言,它的设计目标是安全、并发和高效。Rust的爬虫库非常丰富,例如scraper、select、reqwest等等。这些库提供了许多功能,例如HTML解析、HTTP请求、异步处理等等,使得Rust成为一个非常适合编写爬虫的语言。以下是一个使用reqwest和scraper库编写的简单爬虫示例,用于......
  • Android并发编程高级面试题汇总(含详细解析 二)
    Android并发编程高级面试题汇总最全最细面试题讲解持续更新中......
  • (十四)C#编程基础复习——封装
    C#是一门面向对象编程语言,面相对象编程语言有三大特性,分别是封装、继承和多态。所谓封装就是将一个或多个项目(函数)集合在一个单元中,这个单元称之为类,我们可以根据需要通过权限修饰符来设定类中成员的范围和可见性。C#中的访问权限修饰符有以下几种:public:公共的,所有对象都可以访......
  • 归并排序C++实现
    把归并排序看作二叉树的后序遍历的确是一种好的思路,使代码的逻辑更加清晰。但是具体实现还是遇到了很多的困难。有太多报错,自己也觉得有些莫名其妙。但是事后看来,大多数还是自己粗心所致。以后都可以采用这个框架来处理需要归并排序的问题。classSolution{public:vect......