0

我面临一个技术问题,我浏览了几篇文章以找到答案,但我无法从任何网站获得正确的答案。

我正在为我的项目使用 ScrapySharp 来抓取网页数据。当我尝试从http://edition.cnn.com/POLITICS网站爬取数据时,出现了这个问题。

首先,我通过 IE 加载页面,然后选择 Developer tools 来检查标签。在我为我的代码“//div[@class='cd__content']”选择了我需要的标签之后,此外,当我通过 ScrapySharp 加载上述网页时

ScrapingBrowser browser = new ScrapingBrowser();
WebPage rootPage = browser.NavigateToPageAsync(new Uri(url));
HtmlNodeCollection rootNodes = rootPage.Html.SelectNodes("//div[@class='cd__content']");

rootNodes 的结果显示为 null

当我深入调查时,我看到当页面加载“SECTION”标签为空时,上面提到的 cd__content 在“SECTION”标签内。但是当我通过 IE 或 Chrome 检查时,所有标签都充满了信息,这就是为什么我可以选择元素,但是当我以编程方式加载页面时它不会。我的问题是,如何加载页面并使用 ScrapySharp 填充所有信息。

请高手帮忙看看。

4

1 回答 1

0

如果您分析页面的网络流量,您会看到 javascript 进行了多次调用以从http://edition.cnn.com/data/ocs/section/politics/index.html页面上的每个“内容区域”加载内容。对这些请求的响应包含页面中显示的 HTML 和内容。

您需要自己查看并提出类似请求,或者查看他们的一个或多个RSS 提要是否满足您的需求并为您提供一组更易于解析的内容 - 例如:http ://rss.cnn.com /rss/cnn_allpolitics.rss

于 2017-11-13T15:46:54.823 回答