如何通过在检查器中操作Javascript来抓取表?页面仅显示当前日期's的数据,但我想回到过去,重新收集
How to scrape a table by manipulating Javascript in inspector? Page only reveals current day's data but I want to go back in time and scrape
我想做的事情:
http://www.nea.gov.sg/anti-pollution-radiation-protection/air-pollution-control/psi/pollutant-concentrations/type/pm25-1hr/time/0100#pollutant
我指的是本页的第2和第3张表格。不幸的是,它只显示您查看页面当天的数据。我希望能够回到9月1日,将这些数据收集到谷歌表单中。我只需要第二张表中的1小时PM2.5浓度水平;第三张表中的3小时PSI读数——但如果我能得到全部,那就更好了。
问题
除非我能以某种方式操纵访问日期,否则我看不到任何访问数据的方法。这是一个政府机构,我想他们正在用一个庞大的电子表格来处理这个问题,但收集这些数据的可能性几乎是不可能的。
代码
<script type="text/javascript">
var typebaseUrl = '/anti-pollution-radiation-protection/air-pollution-control/psi/pollutant-concentrations/time/0100';
function changetype(ddl) {
var strTime = ddl.options[ddl.selectedIndex].value;
if (strTime != null) {
var npage = typebaseUrl + "/type/" + strTime + "#pollutant";
window.location = npage;
}
}
</script>
<h1 id="pollutant">
1-hr PM<sub>2.5</sub> (µg/m<sup>3</sup>)<sup>b</sup> Readings on 28 Oct 2015
</h1>
<p>
View reading for:
<select name="ctl00$ContentPlaceHolderTitle$C005$DDLType" id="ContentPlaceHolderTitle_C005_DDLType" class="default" onchange="changetype(this);">
<option value="SulphurDioxide">24-hr Sulphur Dioxide</option>
<option value="PM10">24-hr PM10</option>
<option value="PM25">24-hr PM2.5</option>
<option value="Ozone">8-hr Ozone</option>
<option value="CarbonMonoxide">8-hr Carbon Monoxide</option>
<option selected="selected" value="PM25-1Hr">1-hr PM2.5</option>
<option value="NitrogenDioxide">1-hr Nitrogen Dioxide</option>
</select>
</p>
<div>
<table width="100%" border="0" cellpadding="4" cellspacing="1" class="noalter">
<tr class="even">
<td width="16%" align="center">
<strong>Time</strong>
</td>
<td width="7%" align="center"><strong>1am</strong>
</td>
<td width="7%" align="center"><strong>2am</strong>
</td>
<td width="7%" align="center"><strong>3am</strong>
</td>
<td width="7%" align="center"><strong>4am</strong>
</td>
<td width="7%" align="center"><strong>5am</strong>
</td>
<td width="7%" align="center"><strong>6am</strong>
</td>
<td width="7%" align="center"><strong>7am</strong>
</td>
<td width="7%" align="center"><strong>8am</strong>
</td>
<td width="7%" align="center"><strong>9am</strong>
</td>
<td width="7%" align="center"><strong>10am</strong>
</td>
<td width="7%" align="center"><strong>11am</strong>
</td>
<td width="7%" align="center"><strong>12pm</strong>
</td>
</tr>
<tr>
<td align="center">
<strong>North</strong>
</td>
<td align="center">
87
</td>
<td align="center">
52
</td>
<td align="center">
49
</td>
<td align="center">
70
</td>
<td align="center">
61
</td>
<td align="center">
62
</td>
<td align="center">
16
</td>
<td align="center">
5
</td>
<td align="center">
7
</td>
<td align="center">
8
</td>
<td align="center">
12
</td>
<td align="center">
17
</td>
</tr>
<tr>
<td align="center">
<strong>South</strong>
</td>
<td align="center">
66
</td>
<td align="center">
63
</td>
<td align="center">
53
</td>
<td align="center">
63
</td>
<td align="center">
72
</td>
<td align="center">
51
</td>
<td align="center">
5
</td>
<td align="center">
3
</td>
<td align="center">
6
</td>
<td align="center">
23
</td>
<td align="center">
30
</td>
<td align="center">
27
</td>
</tr>
<tr>
<td align="center">
<strong>East</strong>
</td>
<td align="center">
55
</td>
<td align="center">
68
</td>
<td align="center">
70
</td>
<td align="center">
47
</td>
<td align="center">
60
</td>
<td align="center">
37
</td>
<td align="center">
4
</td>
<td align="center">
5
</td>
<td align="center">
7
</td>
<td align="center">
8
</td>
<td align="center">
18
</td>
<td align="center">
28
</td>
</tr>
<tr>
<td align="center">
<strong>West</strong>
</td>
<td align="center">
49
</td>
<td align="center">
40
</td>
<td align="center">
48
</td>
<td align="center">
58
</td>
<td align="center">
51
</td>
<td align="center">
46
</td>
<td align="center">
12
</td>
<td align="center">
4
</td>
<td align="center">
2
</td>
<td align="center">
10
</td>
<td align="center">
9
</td>
<td align="center">
24
</td>
</tr>
<tr>
<td align="center">
<strong>Central</strong>
</td>
<td align="center">
52
</td>
<td align="center">
64
</td>
<td align="center">
47
</td>
<td align="center">
44
</td>
<td align="center">
54
</td>
<td align="center">
42
</td>
<td align="center">
9
</td>
<td align="center">
6
</td>
<td align="center">
2
</td>
<td align="center">
9
</td>
<td align="center">
18
</td>
<td align="center">
18
</td>
</tr>
<tr class="even">
<td width="16%" align="center">
<strong>Time</strong>
</td>
<td width="7%" align="center"><strong>1pm</strong>
</td>
<td width="7%" align="center"><strong>2pm</strong>
</td>
<td width="7%" align="center"><strong>3pm</strong>
</td>
<td width="7%" align="center"><strong>4pm</strong>
</td>
<td width="7%" align="center"><strong>5pm</strong>
</td>
<td width="7%" align="center"><strong>6pm</strong>
</td>
<td width="7%" align="center"><strong>7pm</strong>
</td>
<td width="7%" align="center"><strong>8pm</strong>
</td>
<td width="7%" align="center"><strong>9pm</strong>
</td>
<td width="7%" align="center"><strong>10pm</strong>
</td>
<td width="7%" align="center"><strong>11pm</strong>
</td>
<td width="7%" align="center"><strong>12am</strong>
</td>
</tr>
<tr>
<td align="center">
<strong>North</strong>
</td>
<td align="center">
<strong style="font-size:14px;">33</strong>
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
</tr>
<tr>
<td align="center">
<strong>South</strong>
</td>
<td align="center">
<strong style="font-size:14px;">35</strong>
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
</tr>
<tr>
<td align="center">
<strong>East</strong>
</td>
<td align="center">
<strong style="font-size:14px;">55</strong>
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
</tr>
<tr>
<td align="center">
<strong>West</strong>
</td>
<td align="center">
<strong style="font-size:14px;">32</strong>
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
</tr>
<tr>
<td align="center">
<strong>Central</strong>
</td>
<td align="center">
<strong style="font-size:14px;">33</strong>
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
</tr>
</table>
我希望能够回到9月1日,将这些数据收集到谷歌表单中。
有一些方法可以让你获得"回到未来"/通过获取信息。
-
要求网站所有者(政府机构)公布过时的数据。API访问可能已启用。
-
每天抓取数据并将数据保存到数据库中,过一段时间后,您将根据需要积累过去的数据。
在检查器中操作JavaScript
你不需要";在[browser]inspector*中操作JS以快速抓取。Scraper,谷歌Chrome插件可以很好地将浏览器信息快速抓取到谷歌表单中。
相关文章:
- 如何在JavaScript中延长当前日期
- 使用当前日期生成随机id
- 使用linq.js按当前日期订购一组momentjs日期
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 获取给定lat-long的javascript中的当前日期和时间
- 生成并格式化当前日期和时间
- 如何在选择当前日期和年数后自动填写日期
- Javascript:根据当前日期检查格式化的日期值
- 如何使用PhoneGap在Sqlite中存储当前日期和时间
- 将硬编码日期与当前日期进行比较
- 如何限制用户只能在日期选择器jquerymobile中选择两天前的日期和当前日期
- 如何将日期与当前日期进行比较以应用逻辑
- Javascript - 从当前日期开始的上个月计算
- 默认情况下,引导日期时间选取器当前日期和当前时间
- 使用 php 或 javascript 从 html 表中检索(获取)当前天气数据
- 使用日期.js分析方法,而不是当前日期
- 如何使用javascript以操纵的UTC格式获取当前日期
- 自动将jqgrid滚动到具有存储数据的单元格的当前日期列和闪烁效果
- 使用new date()将数据与当前日期的MM/DD/YYYY格式的日期进行比较和筛选,同时从用户输入值中减去new d
- 如何通过在检查器中操作Javascript来抓取表?页面仅显示当前日期's的数据,但我想回到过去,重新收集