记一次爬虫实战
记一次爬虫实战,以爬取我最近在看的小说《不可名状的日记簿》为例。
先找到一个合适的网站https://www.qbtxt.co/93_93964/。
用的是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;
}
再看看某一章节里的格式。
发现正文是从第一个<br>
后开始的,每次四个
(空格)接一段文本接两个<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);
}
运行后就可以等待爬取了。
标签:实战,dex,一次,++,爬虫,while,fout,txt,fin From: https://www.cnblogs.com/No85/p/17834463.html