首页 > 其他分享 >记一次爬虫实战

记一次爬虫实战

时间:2023-11-15 18:23:31浏览次数:31  
标签:实战 dex 一次 ++ 爬虫 while fout txt fin

记一次爬虫实战

记一次爬虫实战,以爬取我最近在看的小说《不可名状的日记簿》为例。

先找到一个合适的网站https://www.qbtxt.co/93_93964/

image

用的是https协议,socket什么的太麻烦了,直接用python的requests库。

写一个封装好的python程序,作用是爬取request.txt中网址的内容到response.txt。

import requests
fin=open("request.txt","r")
fout=open("response.txt","w",encoding="utf-8")
url=fin.read()
fout.write(requests.get(url,verify=False).text)
fin.close()
fout.close()

先爬取目录到index.txt,观察格式,显然是<dd><a href="网址.html">标题</a></dd>,写一个解析章节网址的程序。

FILE *fout;
char dex[1000000];
int main() {
	FILE *fdx=fopen("index.txt","r");
	fgets(dex,1000000,fdx);
	fclose(fdx);
	fout=fopen("novel.txt","w");
	int p=0;
	while(dex[p]!=0) {
		FILE *frq=fopen("request.txt","w");
		fprintf(frq,"https://www.qbtxt.co/93_93964/");
		while(dex[p]!='\"') ++p;
		++p;
		while(dex[p]!='\"') fputc(dex[p++],frq);
		fclose(frq);
		++p;
		while(dex[++p]!='<') {
			fputc(dex[p],fout);
			putchar(dex[p]);
		}
		fprintf(fout,"\n\n");
		printf("\n");
		p+=9;
		system("C:\\Users\\admin\\AppData\\Local\\Programs\\Python\\Python312\\pythonw.exe req.py");
		work();
	}
	fclose(fout);
	return 0;
}

再看看某一章节里的格式。

image

发现正文是从第一个<br>后开始的,每次四个&nbsp;(空格)接一段文本接两个<br />(换行),写一个解析章节内容的函数。

char str[1000000];
void work() {
	FILE *fin=fopen("response.txt","r");
	fgets(str,1000000,fin);
	int p=0;
	while(!(str[p]=='<'&&str[p+1]=='b'&&str[p+2]=='r'&&str[p+3]=='>')) ++p;
	p+=8;
	while(true) {
		if(str[p]=='&') {
			fputc(' ',fout);
			p+=6;
		}
		else if(str[p]=='<') {
			if(str[p+1]=='b') {
				fputc('\n',fout);
				p+=6; 
			}
			else break;
		}
		else fputc(str[p++],fout); 
	}
	fprintf(fout,"\n\n");
	fclose(fin);
}

运行后就可以等待爬取了。

novel.zip

标签:实战,dex,一次,++,爬虫,while,fout,txt,fin
From: https://www.cnblogs.com/No85/p/17834463.html

相关文章

  • bupt ai院第一次周赛题解
    题目一简单模拟题点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineebkemplace_back#definexfirst#defineysecondtypedefpair<int,int>PII;typedeflonglongll;typedefunsignedlonglongull;typedefvector<string>VS;typedef......
  • 最后的一次努力:尝试解决百度收录与排名问题
    2023年9月21日我们完全解除了对百度蜘蛛网段116.179.37.0/24的屏蔽,满怀希望地期待着百度的回心转意,心有余悸地担心着再也回不去。当我们从百度那边得知——之前百度蜘蛛疯狂爬取与博文页面ajax请求太多有关,为了大幅减少ajax请求,我们重构代码花了很大力气,以表示我们的真心诚意。......
  • Django实战项目-学习任务系统-文章汇总
    学习任务系统1.0版本已经基本完成了。现在按顺序整理下文章和链接,按照开发时间顺序列举,方便想要完整学习的人。理论上说,按照文章代码可以搭建该系统的70%主体功能,剩下一些小的功能自己参考现有代码学习即可完成。1,Django实战项目-学习任务系统-需求说明https://mp.weixin.qq.co......
  • 五分钟k8s实战-Istio 网关
    在上一期k8s-服务网格实战-配置Mesh中讲解了如何配置集群内的Mesh请求,Istio同样也可以处理集群外部流量,也就是我们常见的网关。其实和之前讲到的k8s入门到实战-使用IngressIngress作用类似,都是将内部服务暴露出去的方法。只是使用Istio-gateway会更加灵活。这里有......
  • 猫眼电影爬虫
    步骤首先利用pip指令安装所需要的soup以及request库(pip下载速度慢可使用pip镜像,更改下载路径到国内网站)然后对猫眼电影网站进行分析,利用request进行信息的获取,利用soup库进行信息查找和整理。最后进行输出,写入txt文件中代码的实现如下importrequestsfrombs4importBeautifulSo......
  • 盘点一个使用Python自动化处理GPS、北斗经纬度数据实战(下篇)
    大家好,我是皮皮。一、前言上一篇文章我们使用了Python来实现数据的导入和分列处理,最终可以得到符合预期的结果,不过还可以继续深挖优化下,这一篇文章一起来看看吧。优化的背景如下图所示:二、实现过程这里【瑜亮老师】继续给了一个优化指导,如下图所示:并且给出的代码如下:withopen("./G......
  • 记一次线上问题引发的对 Mysql 锁机制分析
    背景最近双十一开门红期间组内出现了一次因Mysql死锁导致的线上问题,当时从监控可以看到数据库活跃连接数飙升,导致应用层数据库连接池被打满,后续所有请求都因获取不到连接而失败整体业务代码精简逻辑如下:@Transactionpublicvoidservice(Integerid){delete(id);......
  • Android性能优化:一份详细的布局优化实战指南,太特么重要了
    前言对于Android开发者来说,仅掌握基本的应用开发技能是远远不够的。无论是在工作中还是面试过程中,掌握大量的性能优化知识对于提升应用体验至关重要。Android性能优化主要涵盖以下方面:启动优化、渲染优化、内存优化、网络优化、卡顿检测与优化、耗电优化、安装包体积优化以及安全问......
  • 记一次线上问题引发的对 Mysql 锁机制分析 | 京东物流技术团队
    背景最近双十一开门红期间组内出现了一次因Mysql死锁导致的线上问题,当时从监控可以看到数据库活跃连接数飙升,导致应用层数据库连接池被打满,后续所有请求都因获取不到连接而失败整体业务代码精简逻辑如下:@Transactionpublicvoidservice(Integerid){delete(id);inse......
  • 08-Java项目企业级微服务实战《学成在线》
    黑马程序员Java项目企业级微服务实战《学成在线》,基于SpringCloud、SpringCloudAlibaba技术栈开发,项目搭建到选课支付学习全通关前后端 ......