我正在尝试使用/ search /从地图上从Google地图中抓取数据。
[当我自己搜索时,我将其录音:'https://www.google.com/maps/search/new约克'
我无法使用axios重现此行为。我猜想异步/等待也许有什么用,但是从那以后我没有找到任何解决方案。
这是我的代码:
const axios = require('axios');
const cheerio = require('cheerio');
var map = 'www.google.com/maps/search/';
axios.get(map + 'New York')
.then(response => {
let getData = html => {
coor = [];
v= -1;
const $ = cheerio.load(html);
$('.widget-pane-content scrollable-y').each((i, elem) => {
coor.push({
adress : $(elem).find('span.widget-pane-link').text(),
});
});
console.log(coor);
console.log(coor.length);
}
getData(response.coor);
})
.catch(error => {console.log(error);})
执行文件时,出现此错误:
'Error: Request failed with status code 400'
如果您有解决我问题的线索,谢谢分享!
查看Selenium或Cypress.js(硒的包装)之类的工具
(搜索“端到端测试”或“自动浏览器”)
不幸的是,无法使用Axios之类的工具来完成此操作。 Google Maps不返回redirect
响应,而是使用JavaScript重新加载页面。
以柏树为例:
cy.visit("https://www.google.com/maps/search/new york");
cy.wait(2000); // sit for 2 seconds
cy.get('#thing-im-looking-for')