解析脚本标签内的 json var
Parsing json var inside script tag
我目前正在尝试抓取关注 'https://sports.bovada.lv/soccer/premier-league'
的 json 输出
它的来源如下
<script type="text/javascript">var swc_market_lists = {"items":[{"description":"Game Lines","id":"23", ... </script>
我正在尝试获取 swc_market_lists
var
的内容
现在我遇到的问题是,当我使用以下代码时
import requests
from lxml import html
url = 'https://sports.bovada.lv/soccer/premier-league'
r = requests.get(url)
tree = html.fromstring(r.content)
var = tree.xpath('//script')
print(var)
我得到一个空的 var 值。
我也曾尝试保存 r.text
并查看它,但我没有在其中看到脚本标签。
我错过了什么?
您需要传递 User-Agent
header 才能使其工作:
r = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36"})
要获得所需的 script
,您可以检查文本中是否存在 swc_market_lists
:
script = tree.xpath('//script[contains(., "swc_market_lists")]/text()')[0]
print(script)
提取swc_market_lists
变量值:
import re
data = re.search(r"var swc_market_lists = (.*?);$", script).group(1)
print(data)
然后,为了便于使用,使用 json.loads()
将其加载到 Python 字典中:
import json
data = json.loads(data)
我目前正在尝试抓取关注 'https://sports.bovada.lv/soccer/premier-league'
它的来源如下
<script type="text/javascript">var swc_market_lists = {"items":[{"description":"Game Lines","id":"23", ... </script>
我正在尝试获取 swc_market_lists
var
现在我遇到的问题是,当我使用以下代码时
import requests
from lxml import html
url = 'https://sports.bovada.lv/soccer/premier-league'
r = requests.get(url)
tree = html.fromstring(r.content)
var = tree.xpath('//script')
print(var)
我得到一个空的 var 值。
我也曾尝试保存 r.text
并查看它,但我没有在其中看到脚本标签。
我错过了什么?
您需要传递 User-Agent
header 才能使其工作:
r = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36"})
要获得所需的 script
,您可以检查文本中是否存在 swc_market_lists
:
script = tree.xpath('//script[contains(., "swc_market_lists")]/text()')[0]
print(script)
提取swc_market_lists
变量值:
import re
data = re.search(r"var swc_market_lists = (.*?);$", script).group(1)
print(data)
然后,为了便于使用,使用 json.loads()
将其加载到 Python 字典中:
import json
data = json.loads(data)