inq*_*one 15 c# web-crawler web-scraping html-agility-pack selenium-webdriver
我正试图从网站上删除产品名称.奇怪的是,我似乎只抓了12件物品.我已经尝试了HtmlAgilityPack和HTTPClient,我得到了相同的随机结果.这是我的HtmlAgilityPack代码:
using HtmlAgilityPack;
using System.Net.Http;
var url = @"http://www.roots.com/ca/en/men/tops/shirts-and-polos/";
HtmlWeb web = new HtmlWeb();
var doc = web.Load(url, "GET", proxy, new NetworkCredential(PROXY_UID, PROXY_PWD, PROXY_DMN));
var nodes = doc.DocumentNode.Descendants("div")
.Where(div => div.GetAttributeValue("class", string.Empty) == "product-name")
.Select(div => div.InnerText.Trim())
;
Run Code Online (Sandbox Code Playgroud)
[更新1] @CodingKuma建议我试试Selenium Webdriver.这是我使用Selenium Webdriver的代码:
IWebDriver chromeDriver = new ChromeDriver(@"C:\TEMP\Projects\Chrome\chromedriver_win32");
chromeDriver.Url = "http://www.roots.com/ca/en/men/tops/shirts-and-polos/";
var items = chromeDriver.FindElements(By.ClassName("product-name"));
items.Count().Dump();
chromeDriver.Quit();
Run Code Online (Sandbox Code Playgroud)
我尝试了这段代码,但仍然没有运气.该页面上有20多个项目,但我似乎只是随机获得12.如何抓取该网站上的所有项目?
自v1.5.0-beta92以来,
HtmlAgilityPack有一个FromBrowser方法,允许你等到你想要的所有元素都准备好了.
文档:http://html-agility-pack.net/from-browser
string url = "http://html-agility-pack/from-browser";
var web1 = new HtmlWeb();
var doc1 = web1.LoadFromBrowser(url, o =>
{
var webBrowser = (WebBrowser) o;
// WAIT until the dynamic text is set
return !string.IsNullOrEmpty(webBrowser.Document.GetElementById("uiDynamicText").InnerText);
});
var t1 = doc1.DocumentNode.SelectSingleNode("//div[@id='uiDynamicText']").InnerText
var web2 = new HtmlWeb();
var doc2 = web2.LoadFromBrowser(url, html =>
{
// WAIT until the dynamic text is set
return !html.Contains("<div id=\"uiDynamicText\"></div>");
});
var t2 = doc2.DocumentNode.SelectSingleNode("//div[@id='uiDynamicText']").InnerText
Console.WriteLine("Text 1: " + t1);
Console.WriteLine("Text 2: " + t2);
Run Code Online (Sandbox Code Playgroud)
这里的诀窍是在页面准备就绪时找到告诉你的东西,因为库不可能知道.
对于大多数动态加载内容的单页应用程序或页面,您最好使用实际的浏览器来导航页面。我建议研究硒来进行这种类型的设置。
https://www.nuget.org/packages/Selenium.WebDriver
| 归档时间: |
|
| 查看次数: |
1562 次 |
| 最近记录: |