擅长:python、mysql、java
<p>免责声明:我没有尝试过这种方法,但是如果我被限制使用Scrapy,不想像alecxe上面建议的那样解析JavaScript,我会怎么想。这是一个挑剔的,脆弱的黑客:-)</p>
<p>您可以尝试使用<a href="https://github.com/scrapinghub/scrapyjs" rel="nofollow">scrapyjs</a>从你的垃圾爬虫程序执行JavaScript代码。为了捕获这些参数,您需要执行以下操作:</p>
<ol>
<li>加载原始页面并将其保存到磁盘。在</li>
<li>修改要替换的页面谷歌地图.LatLng使用您自己的功能(见下文)。确保在加载googlejs之后运行脚本。在</li>
<li>使用scrapyjs(或由它创建的webkit实例)加载修改后的页面</li>
<li>解析页面,查找由伪LatLng函数创建的两个特殊div,它们包含提取的lat和lng变量。在</li>
</ol>
<p>关于第2步的更多内容:使您的伪LatLng函数修改HTML页面以公开lat和lng变量,以便您可以用Scrapy解析它们。下面是一些粗略的代码来说明:</p>
<pre><code>var LatLng = function LatLng(lat, lng) {
var latDiv = document.createElement("div");
latDiv.id = "extractedLat";
latDiv.innerHtml = lat;
document.body.appendChild(latDiv);
var lngDiv = document.createElement("div");
lngDiv.id = "extractedLng";
lngDiv.innerHtml = lng;
document.body.appendChild(lngDiv);
}
google = {
map: {
LatLng: LatLng
}
};
</code></pre>
<p>总的来说,这种方法听起来有点痛苦,但尝试起来可能很有趣。在</p>