这个是我在爬取 快代理 这个网站的时候遇到的
通过 bs4、xpath 都拿不到页面的表格数据
但是在 html 服务端渲染的时候有个fps数据
然后我就做了处理:
示例代码:
import json
import requests
import time,re
base_url = 'https://www.kuaidaili.com/free/dps/{}/'.format(page)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'
}
# 发送请求:模拟浏览器发送请求,获取响应数据
response = requests.get(base_url, headers=headers)
data = response.content.decode()
data__ = re.compile(r'const fpsList = (?P<wahaha>.*?)let totalCount =', re.S)
result = data__.finditer(data)
for it in result:
ip_array = it.group("wahaha")
ip_arr = json.loads(str(ip_array.replace(';','')))
print(ip_arr)
return
结果:
注意:这和前端的 json 转化并不一样,js 转换的 json 是带有转义符号的