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解决方案:是由于网页中的播 ...
随机推荐
- 3D Object Detection Essay Reading 2024.04.05
EMIFF 论文:https://arxiv.org/abs/2303.10975 代码:https://github.com/Bosszhe/EMIFF 本文提出了一种新的基于摄像机的三维检测框 ...
- #并查集,线性筛#nssl 1470 X
分析 显然答案就是\(2^{连通块个数}-2\), 将每个数的质数所在的集合合并, 最后判断连通块个数即可(线性筛少了个等号改了半天QWQ) 代码 #include <cstdio> #i ...
- Python基础之:Python中的模块
目录 简介 模块基础 执行模块 模块搜索路径 dir 包 包的相对路径 简介 Python的解释环境是很好用,但是如果我们需要编写一个大型的程序的时候,解释环境就完全不够用了.这个时候我们需要将pyt ...
- DS-Net:可落地的动态网络,实际加速1.62倍,快改造起来 | CVPR 2021 Oral
论文提出能够适配硬件加速的动态网络DS-Net,通过提出的double-headed动态门控来实现动态路由.基于论文提出的高性能网络设计和IEB.SGS训练策略,仅用1/2-1/4的计算量就能达到静态 ...
- Zookeeper+dubbo学习笔记
举个例子 你需要打车 那么会使用滴滴软件,而滴滴软件就类似于Zookeeper, 你和汽车司机都需要在滴滴公司注册(留下联系方式方便联系), 当你需要打车时Zookeeper会帮你找到你需要的汽车司 ...
- org.xml.sax.SAXParseException; lineNumber: 11;
org.xml.sax.SAXParseException; lineNumber: 11; 点击clean 然后再启动
- 中间件之Mycat
一.概念 介绍 Mycat是开源的.活跃的.基于Java语言编写的MySQL数据库中间件.可以像使用mysql一样来使用mycat,对于开发人员来说根本感觉不到mycat的存在 Mycat不负责存储数 ...
- Telnet qsnctfwp
Windows 安装 Telnet 在控制面板的程序和功能中选择打开或关闭Windows功能 启用 Telnet 客户端并单击确认退出 启动终端,输入命令 telnet 打开 Telnet 客户端 在 ...
- css3新单位vw、vh、vmin、vmax的使用详解
1,vw.vh.vmin.vmax 的含义 (1) vw. vh. vmin. vmax 是一种视窗单位,也是相对单位.它相对的不是父节点或者页面的根节点.而是由视窗( Viewport)大小来决定的 ...
- css 中的BFC
一.是什么 我们在页面布局的时候,经常出现以下情况: 这个元素高度怎么没了? 这两栏布局怎么没法自适应? 这两个元素的间距怎么有点奇怪的样子? ...... 归根究底是元素之间相互的影响,导致了意料之 ...