思路是先用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. 微信小程序探究

    前段时间比较流行的微信小程序,因为一直没有所谓内测码也没具体关注.拖到现在正好借组内分享的时机来仔细了解一下微信小程序.了解一个新的事物无外乎从是什么(本质),怎么用(具体用法),为什么用(优缺点)来 ...

  2. 关于replace()方法中第二个参数的转义问题

    如果你想通过Javascript代码在网页中呈现 \ 字符,则在JS代码中你必须输入两个反斜杠 \\,否则会报错.比如: var a = "\"; alert(a); //chro ...

  3. Android之圆形头像裁切

    PS:今天项目测试组发现,百度地图定位的数据坐标位置是正确的,但是显示的数据是错误的.最后查来查去发现,那个商厦在百度地图上根本就没有那条数据,这让我如何显示,当初就推崇使用高德地图定位,上面的数据量 ...

  4. 7.3 数据注解特性之ConcurrencyCheck特性【Code-First系列】

    ConcurrencyCheck特性可以应用到领域类的属性中.当EF执行更新操作的时候,Code-First将列的值放在where条件语句中,你可以使用这个CurrencyCheck特性,使用已经存在 ...

  5. javascript的 Object 和 Function

    一. javascript 的 内置对象: Object 和 Function javascript所有东西,包括 Function 都是对象 . Array  其实是一个 Function 类型的对 ...

  6. Laravel [1045] 解决方法 Access denied for user 'homestead'@'localhost'

    这几天学习Laravel框架遇到了数据库方面的问题. PDOException in Connector.php line 55:SQLSTATE[HY000] [1045] Access denie ...

  7. 使用adagio包解决背包问题

    背包问题(Knapsack problem) 背包问题(Knapsack problem)是一种组合优化的多项式复杂程度的非确定性问题(NP问题).问题可以描述为:给定一组物品,每种物品都有自己的重量 ...

  8. mybatis中的延迟加载

    一.延迟加载 resultMap可以实现高级映射(使用association.collection实现一对一及一对多映射),association.collection具备延迟加载功能. 延迟加载:先 ...

  9. Could not publish server configuration for Tomcat v6.0 Server at localhost.

    经常在使用tomcat服务器的时候 总会发生一些莫名其妙的错误. 就像下面这个错误: 在配置文件中存在多个/MyWeb的配置,导致不能发布服务. 错误信息: Could not publish ser ...

  10. 【转】Windows 窗口层次关系

    原文链接:undefined! 相信在Windows 下面编程的很多兄弟们都不是很清楚Windows 中窗口的层次关系是怎么样的,这个东西很久已经研究过一下,后来又忘记了,今天又一次遇到了这个问题,所 ...