【问题标题】:Cannot Crawl Web Page Data Using ScrapySharp无法使用 ScrapySharp 抓取网页数据
【发布时间】:2017-09-09 10:56:09
【问题描述】:

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

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

首先,我通过 IE 加载页面,并选择开发者工具来检查标签。在我为我的代码“//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 填充所有信息。

专家,请帮忙。

【问题讨论】:

  • 你检查了 rootPage 对象,你在那里得到了实际的 HTML 吗?它是否具有应有的所有 HTML 内容?如果是,问题可能出在您的 xpath 中。

标签: c# asp.net-web-api2 scrapysharp


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 2021-12-07
    • 2014-11-10
    • 2017-10-15
    • 2023-01-07
    相关资源
    最近更新 更多