C语言写的小说抓取
很久之前写的,懒得整理了。有兴趣的可以看一看。附上源码。
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include <wininet.h>
#include <iostream>
#include <string.h>
#include <ctime>
//加入连接库
#pragma comment(lib, "wininet.lib")
using namespace std;
void mySleep(int msecond)
{
clock_t s;
s = clock();
while(clock() - s < msecond);
}
int main(int argc, char* argv[])
{
TCHAR buf;
string sStr,sStr1,NextPage,HomePage;
TCHAR path;
DWORD num;
int i,j,j1;
//打开
HINTERNEThinet = InternetOpen(_TEXT("Microsoft Internet Explorer"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, INTERNET_INVALID_PORT_NUMBER);
// GetTempPath(MAX_PATH, path);
// strcat(path, "/t.txt");
//获取文件句柄
HomePage = "https://www.qu.la/book/8909/";
NextPage = HomePage + "3607170.html"; //name
BEGIN:
HINTERNET hurl = InternetOpenUrl(hinet, NextPage.c_str(), NULL, 0, INTERNET_FLAG_NO_CACHE_WRITE, 0);
// FILE* i = fopen(path, "wb");
//从internet下载文件内容
sStr = "";
ZeroMemory(buf, 1025);
while(TRUE == InternetReadFile(hurl, buf, 1024, &num) && num>0)
{
//fwrite(buf, 1, num, i);
// cout << buf << endl;
// sStr1 = buf;
// sStr = sStr + sStr1;
buf = '\0';
sStr = sStr + buf;
// cout << "" << endl;
}
// fclose(i);
// cout << sStr << endl << "====================================" << endl;
//使用完毕文件句柄和关闭连接
InternetCloseHandle(hurl);
//获取下一页地址
i = sStr.find(_T("下一章"));
i = sStr.rfind("href=",i);
i = i + 6;
j = sStr.find("\"",i+2);
NextPage = sStr.substr(i,j-i);
// cout << endl << "Next Page Addr:" << NextPage << endl << endl;
// cout << endl << "下一页地址:" << sizeof(NextPage) << endl << endl;
//获取章节名称<title>
i = sStr.find("bookname");
i = sStr.find("<h1>",i);
i = i + 4;
j = sStr.find("</h1>",i+2);
cout << sStr.substr(i,j-i) << endl ;
//获取本页内容
i = sStr.find("id=\"content");
i = sStr.find(">",i);
i = i + 1;
j = sStr.find("</div>",i);
j = j - i;
if(NextPage.length()<15)
{
NextPage = HomePage + NextPage;
cout << sStr.substr(i,j) << endl;
mySleep(1000);
goto BEGIN;
}
cout << sStr.substr(i,j) << endl;
InternetCloseHandle(hinet);
End1:
return 0;
}
如果您觉得有用,给点免费的热心值呗 :lol 这么简单呀 醉情的大叔 发表于 2020-2-17 09:24
感谢回复,但是我还是没有成功,看这些报错感觉我的VS确实少了点什么东西,还在学习,所以有点晕
关于字符串连接,可以参看:https://blog.csdn.net/liuweiyuxiang/article/details/83687452
关于类型转换,可以直接在前面加上(LPCWSTR)就可以。注意括弧。
我写的这个现在看起来漏洞百出,的确算不上什么程序。以后有时间再去完善。现在学习网络方面的编程,也是把以前的服务器\客户端通讯程序拿出来重新复习一下。时间太久不做程序了,很多东西都忘光了。一点点拾起来吧。
欢迎交流。回头我尝试着录个c++网络编程的视频试试看。 沙发,热心值已奉上。 这需要学到什么吃程度才能写出来 谢谢分享 沉迷学习,无法自拔 大佬,666666 第一次见到有人用C写爬虫!! 速度怎么样? intel286 发表于 2020-1-2 06:52
这么简单呀
现在我的能力不够啊!暂时看不懂?
以后等我学完C了,再来学习学习吧!