首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python+Chrome爬取动态异步生成的页面内容

背景需求,发送一个中文,返回拼音+声调。

解决之道一

百度一下 “汉字转拼音api”,是否有相关免费的api,还真的找到个“showapi易源接口”。可惜它不带声调。

百度一下“python汉字转拼音+声调”,找到一篇“Python: 汉字转拼音(带声调)”的文章。哈哈,按照功能实现需求了。咳咳,有些跑题。为了贴近标题,提供解决之道二。

解决之道二

百度一下某个汉字,比如“我”,打开百度汉字,如图:

发现会有很多资源,拼音、部首、笔画、五行、基本释义等等。

准备用python爬。直接用urllib.request爬取,发现得到的刚好没有这些资源,怎么回事?

在浏览器下发现有这么一串js

将unicode转中文后得到:

name":"我","type":"word","radical":null,"strokes":"7","definition":"wǒ#wo3#自称,自己,亦指自己一方:~们。~见(我自己的看法)。~辈。~侪(我们)。自~。~盈彼竭。"

说明对应的这些内容是由js动态生成的。

我们需要能爬到动态的内容,可以使用selenium+chrome得到。

为什么不用PhantomJS?

一、PhantomJS暂停开发

二、新版本的Selenium不再支持PhantomJS

我们可以用chrome的headless模式,当然对chrome有要求,版本需要>=60(windows)>=59(linux)。还需要对应的chromeDriver

chromeDriver要求和配置可以参照我的另一篇文章《Python+selenium自动上传博客图片至新浪微博相册》

上代码~

from selenium import webdriver

chrome_options = Options()

chrome_options.add_argument('--headless')

chrome_options.add_argument('--disable-gpu')

driver = webdriver.Chrome(chrome_options=chrome_options, executable_path='C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe')

print(driver.page_source)

duang~duang~duang~就这么成功爬取到了js动态生成的内容

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180404A1NJC600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券