由于想要将自己平时收藏的店铺做个整理,需要解析获取到上图右侧部分的地图标签,然后从图片 url 里提取坐标的经纬度信息。但是使用 requests 解析不到网页右侧一列的部分;使用 Puppeteer 并设置 Header+Cookie 只能获取到一个 html 裸页面,结果如下图
代码参考 https://gist.github.com/huyinjie/bd1733be239ed69352acd7aa33b05dfa
1
cqcn1991 2018-12-08 18:45:08 +08:00 via Android 1
关注。。。我之前只爬了地名,没拿准确经纬度。我本来是打算拿百度 API 查地址的经纬度的。。。
|
2
zenze 2018-12-08 20:46:40 +08:00
点评改版了 原来的页面是可以抓取的 现在好多字符都被替换了 地址都抓不全
|
3
Vegetable 2018-12-08 20:55:34 +08:00 1
|
5
huyinjie OP @zenze #2 那个用了 CSS 的 background-position,能想办法提取到的地址,但还是需要用百度 /高德的 API 转换经纬度信息
|
6
huyinjie OP @Vegetable #3 不过程序处理的时候不还是要解决 header/cookie 之类的验证问题吗,这样相当于直接用浏览器访问了
|
7
Vegetable 2018-12-08 21:41:45 +08:00 1
@huyinjie 没懂,这部分内容是 html 文本,你的代码只要修改一下最后
await page.goto( 'http://www.dianping.com/shop/103638985', { "waitUntil": "networkidle0" } ); await page.waitFor(6000); let content = await page.content() let lat = /shopGlat: *"\d+?\.\d+?"/ let lng = /shopGlng: *"\d+?\.\d+?"/ console.log(lat.exec(content)[0]) console.log(lng.exec(content)[0]) await browser.close(); 就可以取到了 shopGlat: "32.023975" shopGlng:"118.791344" |