思路是先用curl抓取网页源码,然后以关键字寻找出图片网址。
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
 
void get_key_from_str(char *origin, char *str1, char *str2, char *key);
 
int main(int argc, char **argv)
{
    CURL *curl;
    FILE *fp = NULL, *fp_read = NULL;
    int file_size = 0;
    char *tmp = NULL;
    int flag = 0;
    char key[1024] = {0};
    char str1[128] = {0};
    char str2[128] = {0};
 
    if ((fp = fopen("test.txt", "w")) == NULL)
    {
        return 1;
    }
 
    curl = curl_easy_init();
 
    if (curl)
    {
        flag = 1;
        curl_easy_setopt(curl, CURLOPT_URL, argv[1]);     //curl设置网址
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);     //将网页源码存在文件中,好像只能存文件,不能存字符串
 
        curl_easy_perform(curl);//开始抓取
 
        curl_easy_cleanup(curl);
 
        fclose(fp);
 
        fp_read = fopen("test.txt", "rb");
        fseek(fp_read, 0, SEEK_END);      //把指针移到文本最后
        file_size = ftell(fp_read)     ;//算出文本大小
        fseek(fp_read, 0, SEEK_SET);     //再把指针移到最前面
        tmp = (char *)malloc(file_size * sizeof(char));     //malloc一段内存
 
        printf("file_size:%d\n", file_size);
 
 
        fread(tmp, file_size, sizeof(char), fp_read);     //读取文件
 
        fclose(fp_read);
 
        snprintf(str1, sizeof(str1), "img src=\"");
        snprintf(str2, sizeof(str2), "\"");
 
        get_key_from_str(tmp, str1, str2, key);     //取得网址
 
        printf("key:%s\n", key);
        free(tmp);
    }
 
    if (!flag)
    {
        fclose(fp);
    }
 
    return 0;
}
//抓取str1和str2之间的关键字
void get_key_from_str(char *origin, char *str1, char *str2, char *key)
{
    char *p = strstr(origin, str1);
    char *q = strstr(p + strlen(str1), str2);
 
    int len = q - p - strlen(str1);
 
    snprintf(key, len + 1, "%s", p + strlen(str1));
    key[len + 1] = '\0';
}
 
gcc -g -Wall main.c -o test -lcurl
 
./test url
即可

C语言调用curl库抓取网页图片的更多相关文章

  1. C语言调用curl库抓取网页图片(转)

    思路是先用curl抓取网页源码,然后以关键字寻找出图片网址.  范例: #include <stdio.h> #include <stdlib.h> #include < ...

  2. Python3简单爬虫抓取网页图片

    现在网上有很多python2写的爬虫抓取网页图片的实例,但不适用新手(新手都使用python3环境,不兼容python2), 所以我用Python3的语法写了一个简单抓取网页图片的实例,希望能够帮助到 ...

  3. 抓取网页图片的脚本(javascript)

    抓取网页图片的脚本(javascript) 本文地址: http://blog.csdn.net/caroline_wendy/article/details/24172223 脚本内容 (没有换行) ...

  4. php curl多线程抓取网页

    PHP 利用 Curl Functions 可以完成各种传送文件操作,比如模拟浏览器发送GET,POST请求等等,受限于php语言本身不支持多线程,所以开发爬虫程序效率并不高,这时候往往需 要借助Cu ...

  5. PHP抓取网页图片

    <?php set_time_limit(0);//抓取不受时间限制 if($_POST['Submit']=="开始抓取"){ $URL=$_POST['link']; g ...

  6. python抓取网页图片

    本人比较喜欢海贼王漫画,所以特意选择了网站http://www.mmonly.cc/ktmh/hzw/list_34_2.html来抓取海贼王的图片. 因为是刚刚学习python,代码写的不好,不要喷 ...

  7. Python -- 网络编程 -- 抓取网页图片 -- 豆瓣妹子

    首先分析页面URL,形如http://dbmeizi.com/category/[1-14]?p=[0-476] 图片种类对应编号: 1:'性感', 2:'有沟', 3:'美腿', 4:'小露点', ...

  8. Python -- 网络编程 -- 抓取网页图片 -- 图虫网

    字符串(str)编码成字节码(bytes),字节码解码为字符串 获取当前环境编码:sys.stdin.encoding url编码urllib.parse.quote() url解码urllib.pa ...

  9. 从urllib和urllib2基础到一个简单抓取网页图片的小爬虫

    urllib最常用的两大功能(个人理解urllib用于辅助urllib2) 1.urllib.urlopen() 2. urllib.urlencode()   #适当的编码,可用于后面的post提交 ...

随机推荐

  1. 从零开始,搭建博客系统MVC5+EF6搭建框架(4)上,前后台页面布局页面实现,介绍使用的UI框架以及JS组件

    一.博客系统进度回顾以及页面设计 1.1页面设计说明 紧接前面基础基本完成了框架搭建,现在开始设计页面,前台页面设计我是模仿我博客园的风格来设计的,后台是常规的左右布局风格. 1.2前台页面风格 主页 ...

  2. Python_Day_03 list,dic,tuple方法总结

    编程语言中最长见的几种数据类型,字典,列表,等.同样在Python中也有这些数据类型,只是有些表现形式不同.同时在Python中又多了一种叫做元组(tuple)的东西. list(列表) 初始化列表 ...

  3. [WCF编程]9.性能与限流

    一.性能概述 WCF服务的性能取决于很多因素.出了CPU.RAM和网络性能等常见的因素外,实例上下文模式.并发模式.数据契约的设计或使用的绑定等与WCF有关的因素都起着重要的作用. 实例上下文模式用来 ...

  4. [译]Godot系列教程一 - 场景与节点

    场景(Scene)与节点(Node) 简介 先设想有那么一瞬间你自己不再是一名游戏开发者了,而是一名大厨! 你的装备换成了一套大厨的制服.不要考虑制作游戏的事情,你现在的职责是为你的顾客创建新的可口的 ...

  5. Struts2基于注解的Action配置

    使用注解来配置Action的最大好处就是可以实现零配置,但是事务都是有利有弊的,使用方便,维护起来就没那么方便了. 要使用注解方式,我们必须添加一个额外包:struts2-convention-plu ...

  6. 从零开始学 Java - Spring MVC 实现跨域资源 CORS 请求

    论职业的重要性 问:为什么所有家长都希望自己的孩子成为公务员? 答:体面.有权.有钱又悠闲. 问:为什么所有家长都希望自己的孩子成为律师或医生? 答:体面.有钱.有技能. 问:为什么所有家长都不怎么知 ...

  7. ABP中使用OAuth2(Resource Owner Password Credentials Grant模式)

    ABP目前的认证方式有两种,一种是基于Cookie的登录认证,一种是基于token的登录认证.使用Cookie的认证方式一般在PC端用得比较多,使用token的认证方式一般在移动端用得比较多.ABP自 ...

  8. mysql,SQL标准,多表查询中内连接,外连接,自然连接等详解之查询结果集的笛卡尔积的演化

    先附上数据. CREATE TABLE `course` ( `cno` ) NOT NULL, `cname` ) CHARACTER SET utf8 NOT NULL, `ctime` ) NO ...

  9. 打印发现function toUpperCase() { [native code] }

    var s='hello' undefined s.toUpperCase function toUpperCase() { [native code] } s.toUpperCase() " ...

  10. Chocolat.js – 响应式的 jQuery Lightbox 插件

    Chocolat.js 使您能够显示一个或多个图像在同一页面上.给用户展示一组图片缩略图,可以显示全页或块.Chocolat.js 可以很好地处理所有主要的浏览器.它在下面这些浏览器测试通过:IE7+ ...