网页抓取现场报价表格网站

时间:2018-04-20 02:45:39

标签: r web-scraping

我一直试图从这个网站上搜索实时报价,但我遇到了错误。我使用的代码如下所示

library(XML)
webpage='http://quotes.freerealtime.com/dl/frt/M?SA=Percent+Gainers&IM=stats&stat=3'

# parse url
url_parsed <- htmlParse(getURL(webpage), asText = TRUE)

# select table nodes of interest
tableNodes <- getNodeSet(url_parsed, '/html/body/table[2]/tbody/tr/td[4]/table[2]/tbody/tr[2]/td/table')

tableNodes原来是NULL。任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

我认为以下链接解释了您的主要问题

Why does my XPath query (scraping HTML tables) only work in Firebug, but not the application I'm developing?

因此以下内容会返回值

tableNodes <- getNodeSet(url_parsed, '/html/body/table[2]/tr/td[4]/table[2]/tr[2]/td')

但由于实际的表是由js渲染的,因此您将无法访问它。

我建议查看以下内容:

https://www.datacamp.com/community/tutorials/scraping-javascript-generated-data-with-r

答案 1 :(得分:0)

该网页使用AJAX。您可以在Chrome中打开网页,然后按F12打开“开发者工具”,然后转到“网络”标签。刷新网页,并检查记录的XHR。

网页上的表格分为4个部分,因此您可以找到4个记录的请求,其中包含http://app.quotemedia.com/quotetools/scalingMarketStats.go?webmasterId=100804&toolWidth=620&statExchange=NSD&stat=pg&statTop=15&targetsym=symbol&detailURL=http://quotes.freerealtime.com/dl/frt/M%3fIM=quotes%26type=Quote%26SA=quotes%26symbol=symbol&sid=0等网址所需的数据。每个HTML响应中都有两个<table>个标记。提取第二个(嵌套)表,它包含必要的数据:

data

您可以在http://quotes.freerealtime.com/dl/frt/M?SA=Percent+Gainers&IM=stats&stat=3第一次记录的请求中的网页HTML内容中找到这些网址。

请尝试以下步骤从网站上抓取实时报价:

  1. http://quotes.freerealtime.com/dl/frt/M?SA=Percent+Gainers&IM=stats&stat=3
  2. 发出请求
  3. 从响应中提取包含app.quotemedia.com/quotetools/scalingMarketStats.go的所有网址。
  4. 向每个提取的网址发出请求。
  5. 从每个响应中提取嵌套表。