代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Net;
namespace Battlefield_Servers_Ping
{
public partial class Form1 : Form
{
private string appDirectory;
private string htmlFilesDirectory;
private string localFilename;
private string mainurl;
private string[] serversip;
public Form1()
{
InitializeComponent();
appDirectory = Path.GetDirectoryName(Application.LocalUserAppDataPath);
htmlFilesDirectory = "HtmlFilesDirectory";
htmlFilesDirectory = Path.Combine(appDirectory, htmlFilesDirectory);
Directory.CreateDirectory(htmlFilesDirectory + "\\Tests");
mainurl = "http://www.game-monitor.com/search.php?game=bfbc2&&num=";
using (WebClient client = new WebClient())
{
for (int i = 10; i <= 100; i += 10)
{
client.DownloadFile(mainurl + i, htmlFilesDirectory + "\\Tests\\" + i + ".html");
}
}
}
}
}
最后我在硬盘上有10个html文件,每个文件都是1kb,里面我看到了:
[拒绝访问#2]
将它们所在的文件保存在我想要的目录中并不是问题。该网站可能存在问题吗?
变量htmlFilesDirectory是:
C:\\Users\\bout0_000\\AppData\\Local\\Tests\\Tests\\HtmlFilesDirectory
网页来源是:
http://www.game-monitor.com/search.php?game=bfbc2&&num=10
如果我在这个空白地方的broswer chrome中进行保存,因为我可以保存html文件没有问题。并在以后编辑它。 当我做保存作为文件的名称是:
Battlefield Bad Company 2 Servers Server Player Search Game-Monitor.com Server Search, Monitoring, Stats and more
但是在我的程序中我将它保存为diffrenet。地址不同。
答案 0 :(得分:0)
啊,我明白了。您无法从其他域保存此类文件。
您需要做的是将HTML请求流并将其保存到文件中。
尝试使用WebRequest: http://msdn.microsoft.com/en-us/library/system.net.webrequest(v=vs.110).aspx
答案 1 :(得分:0)
似乎该网站阻止了除浏览器之外的请求。要确认,您可以尝试使用DownloadString
方法,该方法会将网页内容作为字符串返回:
var result = client.DownloadString(mainurl + i);
在那里放置断点,你会看到"[ Access Denied #2 ]"
而不是浏览器中看到的html内容。
此限制没有即时解决方法。您可能想尝试关注此帖:
How can I emulate a web browser http request from code?
模拟从您的网络浏览器发送到网站的请求。