C语言:如何删除在可视化网页中未可见的内容(网页txt)
我这个代码仅仅限制于在chrome浏览器中下载china daliy的网页中实现删除可视化内容,因为每个网页的超链接或者文本主内容分布不一样,但是学会了删除一个网页类型的不可视化内容之后,修改其他网页的时候或许只需要小小改动代码就可以了,但前提是你需要把你想要删除网页的txt文件中文本内容在哪个位置。(后面附上源代码)
功能代码主要思想:
①找到你下载的txt网页中的可视化内容,找到他的开端与末尾标志性的字符串。
②写一个函数,传进两个字符串,与你网页文本流进行对比,找到开头就开始录入,找到结尾就结束录入。
③因为标志性一般不会很长,所以字符串我们也没有定义很长,可以根据你所下载网页的里面的文本内容标志所定字符串数组空间的大小。
④首先从文本流中找到'<',开始存字符进字符数组 , 找到'>' 结束存字符数组录入,记得加上'\0'让字符数组变成字符串,然后对网页文本开头标志的字符串进行比较,找到了那就开始进行录入文本内容,只能录入可视化文本,而且与之同时你也要对包含"<"">"这两个字符的内容进行比较,也就是重复开头的工作,存字符串,与结尾标志的字符串进行比较,找到了那就结束录入文本内容。
我的方法可能有点笨,适用于没有学过网页设计,网页编码的人,包括我自己,只能用一些投机取巧比较笨的方法来对一个网页进行操作。
你理解了我这个如何删除不可视化内容,也就是保留可视化内容的操作,之后应该会对其他不是用chrome浏览器下载的china daliy网页进行删除不可视化内容了。
{不懂怎么删除超链接的可以先看一下我另一篇相对比较长但是可能会稍微简单的那两篇文章(删除超链接.....:one-> 如何删除超链接——代码 two->为什么要用fprintf删除文本超链接)第一篇有比较完成的代码,第二篇讲的一些文本流输入输出的一些小细节。第二篇写了我下面这个代码为什么用fscanf而不是其他函数的原因,有兴趣的可以了解一下}
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdbool.h>
void deltxt_chrome(char ch, FILE *fp, FILE *temp, char *utter, char *ending);
//删除chrome不可视化内容函数
int main(void)
{
system("mode con cp select=65001");
char ch;
char start_head[100] = "<div class=\"topBar\">";
char end_head[100] = "<footer class=\"mobile-foot\">";
FILE *fp1 = NULL;
FILE *fp2 = NULL;
//这两个字符串是在chrome下载的china daliy网页中文本内容的开始与结尾的标志
/***********删除之前判断是否已经删除不可视化内容*************/
bool open;
fp1 = fopen("D:/大一集合/数据结构实验报告/实验2/temp实验2/chrome.txt", "r");
while(!feof(fp1))
{
if(fgetc(fp1) == '<')
{
if(fgetc(fp1) == '>')
{
open = true;//开 ,代表还没删除不可视化内容
break;
}
}
else open = false;//关 ,代表已经删除了不可视化内容
}
fclose(fp1);
/********************************************************/
/************chrome浏览器删除不可视化内容***************/
if(open == true)
{
fp1 = fopen("D:/大一集合/数据结构实验报告/实验2/temp实验2/chrome.txt", "r");
fp2 = fopen("D:/大一集合/数据结构实验报告/实验2/temp实验2/new_chrome.txt", "w");
//deltxt(ch1, fp1, tmpfp);用临时文件测试,实现删除超链接
deltxt_chrome(ch, fp1, fp2, start_head, end_head);
fclose(fp1);
fclose(fp2);
}
/********************************************************/
return 0;
}
void deltxt_chrome(char ch, FILE *fp, FILE *temp, char *utter, char *ending)//删除chrome不可视化内容
{
char copy[1001];
char search[100000];
//char ch;
int i = -1, j = 0;
int index = -1;
int time = 0;
int star = -1;
int end = -1;
while(!feof(fp))
{
fscanf(fp, "%c", &ch);
if(ch == '<')//存标志字符串
{
index = 1;//表示进来过
pos_1://标记1
for(i = 0; i < 30; i++)
copy[i] = ' ';
copy[0] = '<';
for(i = 1; i < 1000; i++)
{
pos_2:
fscanf(fp, "%c", ©[i]);
if(copy[i] == '<') goto pos_1;
if(copy[i] == '>')
{
copy[i+1] = '\0';
break;
}
}
if(copy[i+1] != '\0')
{
i--;
goto pos_2;//一直扫描到 '>'出现
}
}
if(strcmp(copy, utter) == 0)
{
star = 1;
}
if(star == 1)
{
if(strcmp(copy, ending) == 0)
{
return;
}
while(!feof(fp))
{
fscanf(fp, "%c", &ch);//录入
if(ch != '<')//不是<就写入
{
fprintf(temp, "%c", ch);
}
else
{
goto pos_1;//否则遇到< 就继续从新存标签判断开始和结束
}
}
}
}
}
C语言:如何删除在可视化网页中未可见的内容(网页txt)的更多相关文章
- 如何在浏览器网页中显示word文件内容
如何在浏览器网页中显示word文件内容 把word文件读到byte[]中,再Response.OutputStream.Write(bytes)到客户端去 Page_Load事件中写: //FileS ...
- 在纯HTML的静态网页中添加一段统计网页访问量的JAVA Script代码?
如何在网站上进行流量统计呢,可以找第三方服务网站去注册,但也可以在网站上直接添加代码,只需将以下代码copy到你的网页中,复制到</body>之前就可以啦!是不是很简单啊! <scr ...
- 使用selenium的方式获取网页中图片的链接和网页的链接,来判断是否是死链(二)
上一篇使用Java正则表达式来判断和获取图片的链接以及跳转的网址,这篇使用selenium的自带的API(getAttribute)来获取网页中指定的内容 实现内容:获取下面所有图片的链接地址以及跳转 ...
- Java使用正则表达式取网页中的一段内容(以取Js方法为例)
关于正则表达式: 表1.常用的元字符 代码 说明 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串 ...
- HtmlParser应用,使用Filter从爬取到的网页中获取需要的内容
htmlparser是一个纯的java写的html解析的库,它不依赖于其它的java库文件,主要用于改造或提取html.它能超高速解析html,而且不会出错.现在htmlparser最新版本为2.0. ...
- 【HTML】网页中如何让DIV在网页滚动到特定位置时出现
用js或者jquery比较好实现.但你要知道,滚动到哪个特定位置,例如滚动到一个标题h3那显示这个div,那么可以用jquery算这个h3距离网页顶部的距离:$("h3").off ...
- 批量删除Maven本地仓库中未下载完成的jar包(不完整的jar包)
1.删除repository库目录下所有后缀名是.lastUpdated的文件 2.进入maven本地仓库地址: CMD进入windows的路径(或在仓库目录的地址栏直接输入CMD,回车自动打开); ...
- 使用 pdf.js 在网页中加载 pdf 文件
在网页中加载并显示PDF文件是最常见的业务需求.例如以下应用场景:(1)在电商网站上购物之后,下载电子发票之前先预览发票.(2)电子商务管理系统中查看发布的公文,公文文件一般是PDF格式的文件. 目前 ...
- 网页中如何启用QQ交谈
很多网友都会发现好多的网页中会有诸如,网页中如何启用QQ交谈? 1. 登录QQ, 打开网址:http://shang.qq.com/v3/widget.html 启用QQ通讯组件. 2. 选择组件样式 ...
- Unity3d:使用uWebKit插件嵌入网页,网页中的flv视频无法播放
问题描述:unity3d程序,使用uWebKit插件嵌入网页,用来播放FLV视频,有的电脑可以正常播放,有的电脑在网页中播放不了ps:网页中的播放器用的是player.swf解决方案:是由于网页中的播 ...
随机推荐
- #Tarjan,贪心#LOJ 3684 「COCI 2022.3」Usmjeravanje
题目传送门 分析 可以发现题目实际上求的是最小强连通分量个数. 并且每个强连通分量必然是由最多两段区间 \(a_l\sim a_r,b_L\sim b_R\) 组成的 只要存在一条路 \(b_R-&g ...
- RabbitMQ 10 头部模式
头部模式是根据头部信息来决定的,在发送的消息中是可以携带一些头部信息的(类似于HTTP),可以根据这些头部信息来决定路由到哪一个消息队列中. 定义配置类. import org.springframe ...
- 第十五篇:JavaScript 之 Dom操作
一.后台管理页面布局 主站布局 <div class="pg-header"></div> <div style="width:980px; ...
- k8s 深入篇———— k8s 的本质[四]
前言 简单整理一下k8s的本质. 正文 首先,Kubernetes 项目要解决的问题是什么? 编排?调度?容器云?还是集群管理? 实际上,这个问题到目前为止都没有固定的答案.因为在不同的发展阶段,Ku ...
- linux中nginx的https证书过期替换
linux中nginx的https证书过期替换 工作记录,不然老是忘 一般提示这个就说明过期了 首先把新的证书换上去,最好和之前的文件名字一样,这样就不用改配置文件了 路径就自己找了需要,不过一般挺好 ...
- Oracle的主键id自增
Oracle的主键id自增 可以直接用序列加触发器的方式实现 首先表里面要有个主键,没有的话用语句或者在编译器中加一下,都可以 然后创建一个序列,一般来说最常用的有这几个参数 CREATE SEQUE ...
- 力扣180(MySQL)-连续出现的数字(中等)
题目: 编写一个 SQL 查询,查找所有至少连续出现三次的数字. 返回的结果表中的数据可以按 任意顺序 排列. 查询结果格式如下面的例子所示: 解题思路: 原表数据: 方法一: 使用内连接(inner ...
- 解析 RocketMQ 业务消息——“事务消息”
简介: 本篇文章通过拆解 RocketMQ 事务消息的使用场景.基本原理.实现细节和实战使用,帮助大家更好的理解和使用 RocketMQ 的事务消息. 作者:合伯 引言:在分布式系统调用场景中存在 ...
- NBF事件中心架构设计与实现
简介:NBF是阿里巴巴供应链中台的基础技术团队打造的一个技术PaaS平台,她提供了微服务FaaS框架,低代码平台和中台基础设施等一系列的PaaS产品,旨在帮助业务伙伴快速复用和扩展中台能力,提升研发 ...
- 1小时打造HaaS版小小蛮驴智能车
简介: 2020年云栖大会上,阿里云发布了一款机器人"小蛮驴",瞬间激起千层浪,无人车,智能物流,机器人等一些概念又火热了一把. 借"小蛮驴"的东风以及火热的H ...