思路是先用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 = ;
char *tmp = NULL;
int flag = ;
char key[] = {};
char str1[] = {};
char str2[] = {}; if ((fp = fopen("test.txt", "w")) == NULL)
{
return ;
}
curl = curl_easy_init();
if (curl)
{
flag = ;
curl_easy_setopt(curl, CURLOPT_URL, argv[]); //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, , SEEK_END); //把指针移到文本最后
file_size = ftell(fp_read) ;//算出文本大小
fseek(fp_read, , 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 ;
}
//抓取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 + , "%s", p + strlen(str1));
key[len + ] = '\0';
}

gcc -g -Wall main.c -o test -lcurl

./test url

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

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

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

  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. 统计在从1到n的正整数中1出现的次数

    问题: 给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有“1”的个数. 例如:N= 2,写下1,2.这样只出现了1个“1”. N= 12,我们会写下1, 2, 3, 4, ...

  2. unity 读取文本与写入文本

    void writeData(string str,string file)    {        string parth = Application.dataPath;        Strea ...

  3. HDP 2.3 Notes

    Hortonworks Data Platform 2.3.4.0-3485 [bug] /usr/hdp/2.3.4.0-3485/zookeeper/bin/zkEnv.sh 26 if [ -z ...

  4. VMWare虚拟机 使用vmtools拷贝文件 临时文件问题

    Win7下, 临时文件会存放在路径C:\Users\admin\AppData\Local\Temp\vmware-admin\VMwareDnD,如果不及时删除,C盘就会越来越大直至放满.

  5. Jmeter模拟不同带宽

    Jmeter自带模拟带宽设置,当然前提肯定是你当前的带宽>=你要模拟的带宽,好比你装了个4m的宽带,要模拟100m的带宽,那是做梦 做起来也不难,打开user.properties文件,增加如下 ...

  6. asp.net中如何调取数据库中存储过程输出的两个变量

    public DataTable GetList_GenqtyNumPrice(int _peoid, int _genstorageid,int _goodsid) { DataSet ds = n ...

  7. LR12.53—第4课:准备Vuser脚本进行负载测试

    第4课:准备Vuser脚本进行负载测试 在前面的课程中,您确认您的Vuser脚本的回放产生了真正的用户的精确仿真.下一个步骤是准备的脚本负载测试.如何将多用户系统同时工作的工作?会拖慢系统到不可接受的 ...

  8. 【原创】安装LoadRunner12.53 版本时出现Critical error的解决方法

    步骤: 1.在官网上下载LoadRunner12.53正版,只不过要注册,然后官网会给个序列号. 2.安装成功之后,快捷键已创建,打开Virtual User Generator时,提示如下错误: 此 ...

  9. Java笔记(一)

    Java语言特征 Java之父:詹姆斯,格斯林 跨平台:一次编译,到处运行write once,run everywhere! Java是一种面向对象的编程语言(OOP)面向对象(OO -- Orie ...

  10. C#学习网站记录

    C# 编程指南--Microfsoft官方C#编程指南 https://msdn.microsoft.com/zh-cn/library/67ef8sbd(v=vs.100).aspx