我试图询问这个site以获得报价单。 问题是在收到最终结果之前,我们需要填写2个表单(2个POST查询)。在
到目前为止我所做的:
首先,我在设置cookies之后发送第一个帖子:
library(httr)
set_cookies(.cookies = c(a = "1", b = "2"))
first_url <- "https://compare.switchon.vic.gov.au/submit"
body <- list(energy_category="electricity",
location="home",
"location-home"="shift",
"retailer-company"="",
postcode="3000",
distributor=7,
zone=1,
energy_concession=0,
"file-provider"="",
solar=0,
solar_feedin_tariff="",
disclaimer_chkbox="disclaimer_selected")
qr<- POST(first_url,
encode="form",
body=body)
然后尝试使用第二个post查询检索报价:
^{pr2}$但不幸的是,我收到一条消息,指示会话结束。非常感谢您的帮助来解决这个问题。在
我添加了cookies和中间产物GET,但仍然没有任何结果。在
library(httr)
first_url <- "https://compare.switchon.vic.gov.au/submit"
body <- list(energy_category="electricity",
location="home",
"location-home"="shift",
"retailer-company"="",
postcode=3000,
distributor=7,
zone=1,
energy_concession=0,
"file-provider"="",
solar=0,
solar_feedin_tariff="",
disclaimer_chkbox="disclaimer_selected")
qr<- POST(first_url,
encode="form",
body=body,
config=set_cookies(a = 1, b = 2))
xx <- GET("https://compare.switchon.vic.gov.au/energy_questionnaire",config=set_cookies(a = 1, b = 2))
gov_url <- "https://compare.switchon.vic.gov.au/energy_questionnaire/submit"
qr1<- POST(gov_url,
encode="form",
body=list(
`person-count`=1,
`room-count`=1,
`refrigerator-count`=1,
`gas-type`=4,
`pool-heating`=0,
spaceheating="none",
spacecooling="none",
`cloth-dryer`=0,
waterheating="other"),
config=set_cookies(a = 1, b = 2))
library(XML)
dc <- htmlParse(qr1)
使用包含以下数据的pythonrequests.Session对象可进入结果页:
您应该可以在页面上看到的返回html中看到匹配的
^{pr2}$h1
:或者使用垃圾表格请求:
我们可以验证它是否有
"<h1>Your electricity offers</h1>"
:下一个问题是实际数据是动态呈现的,您可以验证如果您查看结果页面的源,您实际上可以获得json格式的所有提供程序:
其中的一个片段是:
然后,如果稍后查看请求,例如,当您单击“结果”页面上的“比较选定项”按钮时,会出现一个类似于以下内容的请求:
因此,你可以通过使用费率或一些变化来模拟发生的情况。在
如果您在表单中输入以下相同的值,实际上可以将所有数据作为json获取:
如果我们从按总折扣价排序的列表中提取前两个值:
您将获得:
它应该与您单击
"DISCOUNTED PRICE"
过滤器按钮时在页面上看到的内容相匹配。在对于普通视图,它似乎是按
conditionalPrice
或basePrice
排序的,同样,只拉两个第一个值应该与您在网页上看到的相匹配:如果您单击
https://compare.switchon.vic.gov.au/service/offers
get条目,然后单击rresponse,您可以看到firebug控制台中返回的所有json:你应该能够从中提取你想要的每一个字段。在
输出实际上有一些额外的结果,除非您切换下面的tou按钮,否则您不会在页面上看到这些结果:
您可以从结果中筛选这些结果,以便与默认输出完全匹配,或者提供一个包含在helper函数中的选项:
如果您检查输出,您将看到原始能源第三,在结果中价格为840,当开关关闭时,AGL的价格为860,您可以将其应用于折扣输出:
常规输出似乎也是按条件价格排序的。如果检查源代码,则调用排序的两个js函数是:
所以现在应该完全符合网站的输出。在
相关问题 更多 >
编程相关推荐