【问题标题】:Dynamic Content Parsing动态内容解析
【发布时间】:2014-01-21 07:23:09
【问题描述】:

我正在处理内容解析我为此执行了示例程序我已经获取了一个示例链接 请访问以下链接

http://www.equitymaster.com/stockquotes/sector.asp?sector=0%2CSOFTL&utm_source=top-menu&utm_medium=website&utm_campaign=performance&utm_content=key-sector

Click Here

在上面的链接中,我解析了表数据并存储到 java 对象中。

BSE 和 NSE 并不是我的确切要求,只是我以示例为例。上面的链接是在表格中开发的,它们没有使用 id 和 classes。在我的示例中,我使用 XPath 解析数据

这是我的 Xpath

/html/body/table[4]/tbody/tr/td/table[2]/tbody/tr[2]/td[2]/font/table[2]

我选择并解析它工作正常。如果他们更改了网站结构,我的程序肯定无法运行,这将是一个问题。告诉我任何其他动态解析数据并能够存储在数据库中的方法。即使他们更改了网页结构我用于此 JSOUP api 的网页结构,也会根据条件显示结果。告诉我任何其他为此类需求提供最佳支持的 ApI

【问题讨论】:

    标签: java javascript xpath jsoup web-crawler


    【解决方案1】:

    如果您尝试解析没有任何明确的 id/类来选择节点的页面,则必须尝试依赖其他东西。重新定义整个树确实是最弱的方法,如果添加/更改任何内容,一切都会崩溃。

    您可以尝试依靠颜色://table[@bgcolor="#c9d0e0"],“获取更多信息”字段://table[tr/td//text()="GET MORE INFO"],每行都有“更多信息”://table[.//td//text()="&nbspMore Info&nbsp"]...

    我们的想法是找到理想中独特的东西(如果你找不到任何独特的标准,table[color condition selecting a few tables][2] 仍然会在整个树中更强大),每次都呈现,并将其用作 id。

    【讨论】:

    • 用颜色选择它工作正常 table[bgcolor=#c9d0e0]。为了更好的事情,我尝试了以下 Elements elem = doc.select("table:contains(SCRIPT)");它还显示父表。如何选择特定表
    • 真的不知道你的意思...这是什么“脚本”?如果这选择了父节点,您可以执行node//table 来查看所有包含的表格,但我相信您已经知道了
    • 我的意思是用scriptor bse或nse选择
    猜你喜欢
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 2012-08-19
    • 2012-06-19
    • 1970-01-01
    • 2021-02-26
    相关资源
    最近更新 更多