这是我曾经遇到过的最难倒的事情之一,并且可能没有编程解决方案。
我正在寻找一个市政网站来判断留置权。结果页面有两个帧,左框架和右框架。左框架html是直接的,而不是问题。右边框架会生成一个pdf文档,该文档对应于左侧框架中找到的案例#。
这是实际案例页面的sample link。请注意,我已经处理了虚拟点击以同意TOS,所以我的scrape得到了一个实际的案例页面而不是T.O.S.页。
要获取页面内容需要两个单独的擦除,我使用cURL发送TOS协议,我不会为您提供代码示例。
在第一个cURL之后,我发送第二个cURL以获取相当成功的内容:
function getHtml($url, $post = null) {
$content = "";
$string = "Authenticated=0&AccessLevel=z58jgxoXvjk=&AgentKey=&CacheKey=25735097.0777&LastUrl=".urlencode($url);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIE, "$string");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
if(!empty($post)) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
我已经在结果页面中解析了两个框架网址,因此对基础页面进行cURL没有任何好处,因为这会导致找不到对象错误(因为它是一个框架页面)。
我用左边的框架调用:
$leftframeurl = "https://officialrecords.broward.org/oncoreV2/details.aspx?id=47386935";
$leftframecontent = getHtml($leftframeurl);
echo $leftframecontent . "<br><br>";
...如果我这样做,我会得到一个内容,我可以使用simple_html_dom解析html。
但是有一个与这种情况有关的pdf扫描文档,它显示在右侧框架中,如果您使用浏览器手动搜索,可以看到。
右侧框架的网址实际上是从以下网址重定向:
https://officialrecords.broward.org/oncoreV2/ImageBrowser/ShowPDF.aspx
为:
https://officialrecords.broward.org/oncoreV2/ImageBrowser/SinglePagePdf.aspx
最后一个网址是pdf的网址。你可以看到在url中没有查询字符串变量,没有“id = 47386935”,也没有任何“47386935.pdf”文件位置。根本没有什么可以参考具体的pdf。对我来说,似乎可以在后端查询pdf,超出我的范围。
但我想要的是以某种方式访问该案例的pdf。
我还尝试了一个单独的cURL,发送像这样的pdf标题:
function getPDF($id,$url){
$content = "";
$string = "Authenticated=0&AccessLevel=z58jgxoXvjk=&AgentKey=&CacheKey=25735097.0777&LastUrl=".urlencode($url);
$request = "";
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_COOKIE => "$string",
CURLOPT_URL => $url,
CURLOPT_HTTPHEADER => array('Cache-Control: public', 'Content-type: application/pdf'),
CURLOPT_HEADER => TRUE,
CURLOPT_RETURNTRANSFER =>true,
CURLOPT_FOLLOWLOCATION => FALSE,
CURLOPT_VERBOSE => true,
CURLOPT_POST => FALSE
));
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
$content = getPDF('47386935','https://officialrecords.broward.org/oncoreV2/ImageBrowser/SinglePagePdf.aspx');
......但这也没有给我任何爱。
答案 0 :(得分:1)
它来自调用ImageBrowser/default.aspx?id=47386935&dtk=FJ
的Javascript代码。
<script language="javascript">
parent.doc.location.href="ImageBrowser/default.aspx?id=47386935&dtk=FJ"
</script>
这会在URL中接收文档ID,然后设置一些cookie,然后该URL打开ShowPDF.aspx,它使用cookie中的值来提供相应的PDF。
因此,提取ImageBrowser URL,使用cURL调用它,以便设置相应的cookie,然后获取ShowPDF.aspx,它应该包含您正在寻找的内容。
view-source:https://officialrecords.broward.org/oncoreV2/ImageBrowser/default.aspx?id=47386935&dtk=FJ