思路是先用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. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续2篇-模板导出综合示例)

    自ExcelUtility类推出以来,经过项目中的实际使用与不断完善,现在又做了许多的优化并增加了许多的功能,本篇不再讲述原理,直接贴出示例代码以及相关的模板.结果图,以便大家快速掌握,另外这些示例说 ...

  2. Final Cut Pro X效果插件开发总结

    一.介绍 最近公司需要针对Final Cut Pro(FCP)开发一款效果插件,用于对公司自己开发的视频格式进行后期处理.Final Cut Pro是苹果公司推出的一款视频剪辑软件,因此需要在OSX平 ...

  3. json是个啥东东

    xml 不用说 只要是搞web开发的 没听说谁不知道的 一种类似数据传输格式定义的语言 但是他却不是一个真正的轻量级的东西 其他的不说 只要传输一点很少的数据 经过他那左括号右括号 还有什么属性 一包 ...

  4. deployment与Web应用程序部署

    定义用于支持 Web 应用程序部署的配置设置. <deployment retail="true|false" /> retail属性:设置一个值,该值指定是否以发布模 ...

  5. Newtonsoft.Json异常处理

    var resultStr="{\"Success\":false,\"Data\":1}"; GetRequestPriceRendaIn ...

  6. 扩展lamda表达中distinct按照字段去除重复

    首先,我们定义一个Student类来测试. public class Student { public int ID { get; set; } public string Name { get; s ...

  7. 企业商务差旅信息化管理与移动App

    背景       某航空公司需要到北京某服务提供商公司学习交流,为了节省出行成本让出差员工乘坐公司运营航线,去程路途较远.需要在先乘飞机到天津机场,转地铁后,再乘动车到北京.回程时发生 后补机票失败, ...

  8. 各大互联网公司前端面试题(HTML/CSS)

    Html篇: 1.你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? IE: trident内核 Firefox:gecko内核 Safari:webkit内核 Opera:以前是presto ...

  9. jquery中 $(document).ready()和window.onload的区别

    1.执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行. $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. 2.编写个数不同 ...

  10. 天津政府应急系统之GIS一张图(arcgis api for flex)讲解(六)地图搜索模块

    config.xml文件的配置如下: <widget label="地图搜索" icon="assets/images/emergency_resource_ove ...