所以这个问题在a **中真的很痛苦。我正在编写一个需要Yahoo Finance文章URL的程序。为了使它更简单,我想说我正试图从雅虎财经获得以下文章的URL。
一开始我尝试使用Xpath来获取所有LI,a,ul,ol标签 - 全部失败。它给了我错误的URL,而不是文章的URL。
所以我转向正则表达式 - 我使用了Expresso库中的模式用于URL,仅用于记录,模式如下(?<Protocol>\w+):\/\/(?<Domain>[\w@][\w.:@]+)\/?[\w\.?=%&=\-@/$,]*
。失败也是......
然后,我使用了一个simle CNTR + F来搜索主要HTML源代码中的单个文章的URL,以及WT *!它不存在?这非常奇怪 - HTML源代码是否假设包含所有页面的数据?
我知道这是一个非常难以解决的问题而且不是非常集中的问题,但是我在Stack Oveflow上至少阅读了关于这个主题的10万个问题并且没有找到任何帮助我...所以我会很高兴任何一种救命。谢谢 :) 注意 - 我使用vb.net语言和HtmlAgilityPack来检索html代码。图片取自Yahoo Finance main website.
答案 0 :(得分:1)
如果页面的内容是动态生成的,那么最好使用cookie或其他与会话相关的内容呈现页面。
您可以使用CURL或phantomJS来获取完整的html页面
获取完整页面后,您可以使用Regex提取网址。
答案 1 :(得分:1)
尝试像这样抓住门户网站是一个非常糟糕的主意。您应该尝试以另一种格式获取相同的数据,例如RSS,这是XML,您可以使用XPath轻松提取数据。 Yahoo ,作为大多数新闻门户网站,提供RSS格式的许多数据选项。只需在页面中搜索主题,就可以找到一些链接。
以下是我在RSS中搜索Yahoo Finances的页面:
http://finance.yahoo.com/rss/topfinstories
这是您将从该链接获得的XML文件的一部分:
<rss version="2.0">
<channel>
<title>Yahoo! Finance: Top Stories</title>
<link>http://biz.yahoo.com/top.html</link>
<description>Top Stories from Yahoo! Finance</description>
<language>en-us</language>
<lastBuildDate>Fri, 13 Jun 14 16:55:08 GMT</lastBuildDate>
<image>...</image>
<item>
<title>Oil’s rise not just about Iraq turmoil</title>
<link>
http://us.rd.yahoo.com/finance/news/rss/story/SIG=15hovs6uo/*http%3A//us.rd.yahoo.com/finance/news/topfinstories/SIG=13e3917ka/*http%3A//finance.yahoo.com/blogs/daily-ticker/oil-s-hitting--130-a-barrel-by-2015--dan-dicker-141207816.html?l=1
</link>
<description>
Dan Dicker, author of "Oil's Endless Bid," tells The Daily Ticker why unrest in Iraq is just one reason oil prices are destined to keep rising.
</description>
<guid isPermaLink="false">yahoo_finance/102194239</guid>
<pubDate>Fri, 13 Jun 14 16:55:08 GMT</pubDate>
</item>
<item>
<title>Struggling retailers look like buyout bait</title>
<link>
http://us.rd.yahoo.com/finance/news/rss/story/SIG=15kinjdvj/*http%3A//us.rd.yahoo.com/finance/news/topfinstories/SIG=13h3m0qn0/*http%3A//finance.yahoo.com/blogs/breakout/struggling-mall-retailers-are-looking-like-buyout-bait-141750824.html?l=1
</link>
<description>
One subset of retailers has been so spurned by investors that they are stuffed with idle cash and appear cheap enough for some opportunistic and risk-embracing buyout firms to begin taking a look.
</description>
<guid isPermaLink="false">yahoo_finance/1823439360</guid>
<pubDate>Fri, 13 Jun 14 16:55:07 GMT</pubDate>
</item>
...
要获得所有标题,您可以使用:
//item/title
你得到这个清单:
Oil’s rise not just about Iraq turmoil
Struggling retailers look like buyout bait
U.S. government said to seek $10 billion from Citigroup
...
您还应该查看以下链接:https://developer.yahoo.com/rss/,其中包含有关希望使用RSS数据的开发人员的信息。