c# - HttpWebRequest - 启用假 Javascript

标签 c# httpwebrequest web-scraping

我正在尝试使用 C# 下载网页:

var responseData = "";
var strUrl = this.QuerySelector(item, "a[class='url']").Attributes["href"].Value;

request = (HttpWebRequest)WebRequest.Create(strUrl);
request.Method = "GET";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = 0;
request.CookieContainer = cookies;
request.Timeout = System.Threading.Timeout.Infinite;
request.UserAgent = this.RefreshUserAgent();
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
request.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
request.KeepAlive = true;
request.AllowAutoRedirect = false;
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

response = (HttpWebResponse)request.GetResponse();
response.Cookies = request.CookieContainer.GetCookies(request.RequestUri);
var encoding = new System.Text.UTF8Encoding();
var responseReader = new StreamReader(response.GetResponseStream(), encoding, true);

responseData = responseReader.ReadToEnd();
response.Close();
responseReader.Close();

但是该网站一直给我相同的代码,使 JavaScript 能够继续。 我已经使用 Fiddler 检查了数据 - 它只是再次导航到自身,但我无法跳过此消息:

Before you can move on - please enable JavaScript.

该网站是 Manta.com,这是我的示例页面。 任何想法..

http://www.manta.com/c/mrsywyl/leeds-automotive

最佳答案

这是正确的。 HttpWebRequest 只是执行 HTTP 请求。它不支持 JavaScript。如果您想要这种行为,请尝试使用 WebBrowser 控件或类似 Awesomium 的控件。

关于c# - HttpWebRequest - 启用假 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15053340/

相关文章:

c# - 如何进行正确的多边形旋转? (在 C# 中,尽管它适用于任何事物)

c# - request.GetResponse 总是给出超时

python - 如何使用 BeautifulSoup Python 抓取 "show more"按钮?

html - 从 href 链接列表中抓取数据?

c# - 如何在azure中获取VM的核心数

c# - StringBuilder类的线程安全

c# - 反射是可能的混淆

c# - 如何使用 C# 将遗留程序的 POST 方法的 HttpWebRequest 转换为 HttpClient?

silverlight - 如何在Silverlight WebClient中设置超时?

python - 以前未见过的 Web 元素引用