C语言,如何对网页进行 *** 作?

C语言,如何对网页进行 *** 作?,第1张

首先,你这个想法还是很不错的,我以前也想这么做过。不过,学习html语言在这里肯定是次要的,主要的还是要学会分析的方法,而不是掌握被分析的内容,你说是吧?如果要用程序抓取网页自动保存到本地,就要会用socket编程,或者学习使用libcurl库,这些都比学html语言有用的多,不做网页抓取的时候,这些知识依然非常有用。而且,不同的网页,内容不同,规律可能也不同。比如你给的那个例子网址,我右键查看了源代码,里面就根本没有所谓的<td>、<tr>标签,即它的表格不是通过这些标签来实现的。所以,让你去看这些标签,就是南辕北辙了。网页分析,说到底还是字符串处理和分析。所以,你如果真的想学,不如好好学一下正则表达式和字符串处理相关的函数,以及函数库,比如tidy库等。正则表达式是用来匹配一类字符串的,方便找规律,也方便处理,你稍微学习一点点就知道有多么的强大,多么的有用了。而且,正则表达式跟语言无关,什么语言都能用得到,学这个不亏的。标准C库中没有正则表达式相关的函数,一般来说C中使用两种正则表达式库,一为POSIX

C正则库,二为perl正则库PCRE。相比较而言PCRE要强大些,POSIX

C正则库就足够使用。下面,这几个链接里面有网页分析的一些例子,虽然不都是C语言来处理的。但是,思路都是一致的。

所以,说到底,还是正则表达式、正则函数库、字符串处理函数这些才是根本。先说这些,希望对你有所帮助。如果你在学习过程中还有什么问题,欢迎随时交流:)C#的: http://www.jb51.net/article/16618.htmC#的: http://mytiu.blog.163.com/blog/static/1059718452009127112226478/这里还有一段C语言的代码,

是将下载下来的网页源代码处理成没有标签的纯文字文本#include

<tidy.h>#include

<buffio.h>#include

<stdio.h>#include

<errno.h>int

main(int

argc,

char

**argv

){const

char*

input

=

"<title>Foo</title>

Foo!"TidyBuffer

output

=

{0}TidyBuffer

errbuf

=

{0}int

rc

=

-1Bool

okTidyDoc

tdoc

=

tidyCreate()

//

Initialize

"document"printf(

"Tidying:\t%s\n",

input

)ok

=

tidyOptSetBool(

tdoc,

TidyXhtmlOut,

yes

)

//

Convert

to

XHTMLif

(

ok

)rc

=

tidySetErrorBuffer(

tdoc,

&errbuf

)

//

Capture

diagnosticsif

(

rc

>=

0

)rc

=

tidyParseString(

tdoc,

input

)

//

Parse

the

inputif

(

rc

>=

0

)rc

=

tidyCleanAndRepair(

tdoc

)

//

Tidy

it

up!if

(

rc

>=

0

)rc

=

tidyRunDiagnostics(

tdoc

)

//

Kvetchif

(

rc

>

1

)

//

If

error,

force

output.rc

=

(

tidyOptSetBool(tdoc,

TidyForceOutput,

yes)

?

rc

:

-1

)if

(

rc

>=

0

)rc

=

tidySaveBuffer(

tdoc,

&output

)

//

Pretty

Printif

(

rc

>=

0

){if

(

rc

>

0

)printf(

"\nDiagnostics:\n\n%s",

errbuf.bp

)printf(

"\nAnd

here

is

the

result:\n\n%s",

output.bp

)}elseprintf(

"A

severe

error

(%d)

occurred.\n",

rc

)tidyBufFree(

&output

)tidyBufFree(

&errbuf

)tidyRelease(

tdoc

)return

rc}

1、使用WebBrowser控件,可以 *** 作网页中的元素、控件,调用网页的JS方法。 可以使用MFC集成WebBrowser。 QT中,有与WebBrowser类似的QWebEngineView控件。

2、网页录入信息的本质是,你再填写了信息之后,浏览器根据你的输入,将数据通过HTTP的POST方式发送到服务器。你若是不想手动录入,便按照既定的格式,自己用程序构造HTTP的POST请求,然后将其发送到服务器即可。 这里我肯定只能给出思路,具体的实现如果楼主还不清楚的话,建议楼主自己去学习一下web的工作方式、HTTP相关知识。 清楚了HTTP之后,c的网络相关直接用socket。若嫌麻烦便找个HTTP客户端库吧,建议使用curl。

网页发送数据接受数据间件职责

用C写网页编译exe文件修改cgi.

其输入输都根据标准输入输完LZ想用虚拟主机执行C语言编写CGI行CGI权限太执行任何 *** 作所买虚拟主机肯定支持C语言编写CGI

CGI接口标准包括标准输入、环境变量、标准输三部

1.标准输入

CGI程序像其执行程序,通标准输入(stdin)Web服务器输入信息,Form数据,所谓向CGI程序传递数据POST意味着 *** 作系统命令行状态执行CGI程序,CGI程序进行调试POST用,本文例,析CGI程序设计、程技巧

2.环境变量

*** 作系统提供许环境变量,定义程序执行环境,应用程序存取Web服务器CGI接口另外设置自些环境变量,用向CGI程序传递些重要参数CGIGET通 环境变量QUERY-STRING向CGI程序传递Form数据

3.标准输

CGI程序通标准输(stdout)输信息传送给Web服务器传送给Web服务器信息用各种格式,通纯文本或者HTML文本形式,我命令行状态调试CGI程序,并且输

面简单CGI程序,HTMLForm信息直接输We b浏览器

# include <stdio.h>

# include <stdib.h>

main()

{

int i , n

printf (〃Content type: text/plain\n\n〃)

n=0

if(getenv(〃CONTENT-LENGTH〃))

n=atoi(getenv(CONTENT-LENGTH〃))

for (i=0i<ni++)

putchar(getchar())

putchar (′\n′)

fflush(stdout)

}

面程序作简要析

prinft (〃Content type :text/plain\n\n〃)

行通标准输字符串〃Content type :text/plain\n\n〃传送给Web服务器MIME信息,告诉Web服务器随输纯ASCII文本形式请注意信息两新行符,Web服务器需要实际文本信息始前先看见空行

if (getenv(〃CONTENT-LENGTH〃))

n=atoi (getenv(〃CONTENT-LENGTH〃))

行首先检查环境变量CONTENT-LENGTH否存Web服务器调用使用POSTCGI程序设置环境变量,文本值表示Web 服务器传送给CGI程序输入字符数目,我使用函数atoi() 环境变量值转换整数,并赋给变量n请注意Web服务器并文件结束符终止输,所检查环境变量CONTENT-LENGTH, CGI程序知道候输入结束

for (i=0i<ni++)

putchar(getchar())

行0循环(CONTENT-LENGTH-1)标准输入读每字符直接拷贝标准输,所输入ASCII形式送给Web服务器

通例,我CGI程序般工作程总结几点

1.通检查环境变量CONTENT-LENGTH,确定少输入

2.循环使用getchar()或者其文件读函数所输入

3.相应处理输入

4.通〃Contenttype:〃信息,输信息格式告诉Web服务器

5.通使用printf()或者putchar()或者其文件写函数,输传送给Web服务器

总,CGI程序主要任务Web服务器输入信息,进行处理,输结再送给Web服务器


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12206006.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存