python+selenium获取网页动态加载的json文件

今天遇到的问题

F12中能找到json文件,我所要也就是json文件里面的strokes内容。
在这里插入图片描述
但是在先前的写的代码中,通过selenium自动化库能完成汉字的自动化搜索。但是无法获取到的json文件。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
import json
import re
import time
import requests
import pprint
#创建WebDriver对象
driver = webdriver.Chrome()
#等待变量
wait = WebDriverWait(driver,10)
#模拟搜索汉字
driver.get('http://bihua.shufaji.com/')
# 等待“搜索”按钮加载完成
search_btn = driver.find_element_by_xpath("//*[@id='char']")
# 在搜索框填写“查询笔画的字”
search_btn.send_keys(wname)
# 确认元素是否出现
# 等待确认“按钮”加载完成
confirm_btn = wait.until(
	EC.element_to_be_clickable((By.CSS_SELECTOR, '#submit'))
)
# 单击“确认”按钮
confirm_btn.click()
# 等待5秒
time.sleep(5)
#动态AJAX返回的完整html页面
html = driver.page_source

以上代码只是完成了自动化搜索和获取完整的态页面。对于加载出来的东西对我没有用。还是没法直接获取到json文件。
场面一度陷入尴尬。
转个思路 ,不妨返回F12,从页面下手找突破口。
在这里插入图片描述
从这里看,我们需要这里的json文件,这个头部 信息header里面是有url可以直接链接到这个json文件内容里面的。
在这里插入图片描述
那我们要做的就是能获取这个url。但是这只是一个字的,我们要做到的是它能自己搜索,自己获取相关数据。
这种字体字库的网站一般是统一的字体文件库,url肯定是有规律。我们就多搜几个字来找寻他命名的规律。
在这里插入图片描述
在这里插入图片描述

各位看官老爷请看,上面是“魑”字的url,下面是“魅”字的url。两者对比不难发现。二者就是json的文件名不同。而.json前面字符就是代表哪个字。我们要做的就是获取到代表这个字的字符,然后固定组合就行。
这是网站原网址
在这里插入图片描述
这是搜索字之后的网址
在这里插入图片描述
二者对比不难发现,当前网页的网址多出来的部分其实就是这个字在该网站后台库里面的编码。只是我们的浏览器加载的时候解码过,所以显示的是汉字。但其实我们直接获取网页源码的时候。获得到的还是它的字符编码。
接下来就好弄了。

# 获取当前页面的url
url = driver.current_url
print(url)
# 提取搜索的汉字的字节码
#这里提取到的是str类型 ,通过split分片将str分为了两段。
#因为是char=后面是具体的编码,所以就以“=”进行分片
transcoding = url.split('=')
#因为分为了两段,所以取第二段就是我要的汉字编码
print(transcoding[1])
#进行拼接组合,得到当前爬取汉字json文件的url
new_url = ('https://cdn.jsdelivr.net/npm/hanzi-writer-data@2.0/' + transcoding[1] + '.json')
print(new_url)

至此,完整获得json文件。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值