当前位置:首页 > 代码 > 正文

怎么通过源代码下载小说文本(小说网站源码与教程)

admin 发布:2022-12-19 16:49 162


今天给各位分享怎么通过源代码下载小说文本的知识,其中也会对小说网站源码与教程进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

怎么把小说网站上的文字都下载下来

1.复制下来做成TXT看.

2.有的网站不许复制,那就单击右键,产查看源文件,把里面 的文字复制下来.

3.把网站下载下来

4.如果连源代码也做成加密的,而你还是不想花钱看书..那就抄下来吧........

如何通过代码下载文件

用MFC的CInternetFile,CInternetSession,CHttpConnection等类,已知服务器名及文件路径,代码越简单越好。

以下是代码片段:

//Download http file through proxy

//--------------------------------------------------------------------------------

We can find details about Proxy Authentication and Sever Authentication methed in MSDN.

Just search for the keyword "INTERNET_OPTION_USERNAME".

Here I give a very simple example. It works in my project.

CString GeHttptFile(const char *url)

{

CString szContent;

char strProxyList[MAX_PATH], strUsername[64], strPassword[64];

//in this case "proxya" is the proxy server name, "8080" is its port

strcpy(strProxyList, "proxya:8080");

strcpy(strUsername, "myusername");

strcpy(strPassword, "mypassword");

DWORD dwServiceType = AFX_INET_SERVICE_HTTP;

CString szServer, szObject;

INTERNET_PORT nPort;

AfxParseURL(url, dwServiceType, szServer, szObject, nPort);

CInternetSession mysession;

CHttpConnection* pConnection;

CHttpFile* pHttpFile;

pConnection = mysession.GetHttpConnection(szServer,

INTERNET_FLAG_KEEP_CONNECTION,

INTERNET_INVALID_PORT_NUMBER,

NULL, NULL);

pHttpFile = pConnection-OpenRequest("GET", szObject,

NULL, 0, NULL, NULL,

INTERNET_FLAG_KEEP_CONNECTION);

//here for proxy

INTERNET_PROXY_INFO proxyinfo;

proxyinfo.dwAccessType = INTERNET_OPEN_TYPE_PROXY;

proxyinfo.lpszProxy = strProxyList;

proxyinfo.lpszProxyBypass = NULL;

mysession.SetOption(INTERNET_OPTION_PROXY, (LPVOID)proxyinfo, sizeof(INTERNET_PROXY_INFO));

pHttpFile-SetOption(INTERNET_OPTION_PROXY_USERNAME, strUsername, strlen(strUsername)+1);

pHttpFile-SetOption(INTERNET_OPTION_PROXY_PASSWORD, strPassword, strlen(strPassword)+1);

pHttpFile-SendRequest(NULL);

DWORD nFileSize = pHttpFile-GetLength();

LPSTR rbuf = szContent.GetBuffer(nFileSize);

UINT uBytesRead = pHttpFile-Read(rbuf, nFileSize);

szContent.ReleaseBuffer();

pHttpFile-Close();

delete pHttpFile;

pConnection-Close();

delete pConnection;

mysession.Close();

return szContent;

}

bool SaveUrl(LPCTSTR url, LPCTSTR filename)

{

HINTERNET hNet = ::InternetOpen("Outlook",

PRE_CONFIG_INTERNET_ACCESS,

NULL,

INTERNET_INVALID_PORT_NUMBER,

0) ;

HINTERNET hUrlFile = ::InternetOpenUrl(hNet,

url,

NULL,

0,

INTERNET_FLAG_RELOAD,

0) ;

char buffer[10*1024] ;

DWORD dwBytesRead = 1;

BOOL bRead=TRUE;

CFile file;

file.Open(filename,CFile::modeCreate|CFile::modeWrite);

while(bReaddwBytesRead0)

{

bRead = ::InternetReadFile(hUrlFile,

buffer,

sizeof(buffer),

dwBytesRead);

if(dwBytesRead0)

file.Write(buffer,dwBytesRead);

}

::InternetCloseHandle(hUrlFile) ;

::InternetCloseHandle(hNet) ;

file.Close();

AfxMessageBox("finished");

return bRead;

}

void CC02021101Dlg::OnOK()

{

// TODO: Add extra validation here

bool bret=SaveUrl(";lanmuid=2","C:\\temp\\test.html");

if(bret)

AfxMessageBox("true");

else

AfxMessageBox("false");

}

下载事件说明:

OnDownloadBegin --开始下载

OnDownloadComplete --下载结束

OnDocumentComplete --页面下载完毕

对于每个HTML页面,顺序都是如此.如果是Frame或IFrame的文件都会当成HTML页面处理.也就是说如果一个页面中有3个IFrame,那么总共会触发4次BeforeNavigate2事件.

对于每个连接且需要显示出来的二进制文件(如*.gif,*.bmp,*.jpg...)都会触发一个DownloadBegin和DownloadComplete事件.

那我们怎么判断是否全部下载完毕呢?嘿嘿,TWebBrowser控件不是有一个Busy属性的吗?包括相关文件:

#include

#include

#import

做成了:

Bool GetFromWeb(LPSTR pURL, LPSTR

SaveAsFilePath )

{ CInternetSession session; //会话期对象)

CHttpConnection* pServer = NULL; // 指向服务器地址(URL)

CHttpFile * pHttpFile = NULL; // HTTP文件指针

CString strServerName; //服务器名

CString strObject; //查询对象名(http文件)

INTERNET_PORT nPort; //端口

DWORD dwServiceType; //服务类型

DWORD dwHttpRequestFlags = //请求标志

INTERNET_FLAG_EXISTING_CONNECT

INTERNET_FLAG_NO_AUTO_REDIRECT;

const TCHAR szHeaders[] = _T("Accept: text/*\r\nUser-Agent: HttpClient\r\n");

BOOL OK=AfxParseURL( //词法分析

pszURL, //被分析URL串

dwServiceType, //服务类型,ftp,http等

strServerName, //服务器名

strObject, //URL中被查询对象

nPort ); //URL指定的端口,可能为空

OK=OK //本例只考虑http协议

(dwServiceType ==

INTERNET_SERVICE_HTTP);

if (!OK)

{ AfxMessageBox("URL出错"); //报错

return false;

}

pServer = session.GetHttpConnection(strServerName, nPort); /获得服务器名

pHttpFile = pServer- OpenRequest( CHttpConnection::HTTP_VERB_GET,strObject, NULL, 1, NULL, NULL,dwHttpRequestFlags);

//向服务器发送请求,建立http连接,

//建立本机上的http文件指针

pHttpFile-AddRequestHeaders(szHeaders);

pHttpFile-SendRequest(); //发送请求

CStdioFile f; //输出文件对象

if( !f.Open( //打开输出文件

SaveAsFilePath, CFile::modeCreate | CFile::modeWrite | CFile::typeText ) )

{ MessageBox( "Unable to open file";

return false;

}

//下面将检索结果保存到文件上

TCHAR szBuf[1024]; //缓存

while (pHttpFile-ReadString(szBuf, 1023))

f.WriteString( szBuf );

f.Close(); //善后工作

pHttpFile -Close();

pServer -Close();

if (pHttpFile != NULL) delete pHttpFile;

if (pServer != NULL) delete pServer;

session.Close();

return true;

}

怎么样下载网页上的文件?

1、文本资源的下载方法:

一般情况下,网页上文本内容可以直接选择复制下来,或者直接保存为网页文件或文本文件。但是,也有一些网页上的文本内容不能直接被选择和复制,也不能被保存为网页文件或文本文件。

有些网页作了加密处理,右键不起作用。这时可点击网页菜单栏上“查看”菜单中的“源文件”选项,将整个网页的HTML源文件保存下来后,再从源代码中寻找你所需要的文本信息。

2、网页文本素材的下载和处理:

在网页的空白处用鼠标右击,在快捷菜单中选择“查看源文件”,弹出网页的源文件编辑窗口。该窗口一般是记事本窗口。

查看该文件的内容,将正文前的所有内容删除,然后保存为文本文件。

将保存的文件的扩展名.txt改为网页文件的扩展名.htm。

再次打开该文件后,文本内容就可以被复制下来。

更多关于怎么样下载网页上的文件,进入:查看更多内容

如何下载txt格式的小说

如果上正规的大型书站的话,难度就大了。具体步骤如下:点击全文阅读,切换到这个界面,后点击工作栏查看一项中的查看源文件,跳出了一个文本,然后选取有价值的内容(中间会夹杂些代码)复制。后新建一个WORD文件,粘贴,再替换掉决大数代码(采用把有一些相同的代码替换成空格)后全选复制,再粘贴到一个TXT文本就成了

关于怎么通过源代码下载小说文本和小说网站源码与教程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/13977.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载