<p>正如RaminNietzsche在注释中所述,您应该在这个特殊的<code>script</code>标记中提取脚本的文本。例如,您可以使用<code>regex</code>或<code>built-in methods</code>(比如<code>split()</code>、<code>strip()</code>和{<cd6>}。在</p>
<p><strong>代码:</strong></p>
<pre><code>from bs4 import BeautifulSoup
import requests
import re
import json
moon_url = "http://www.moongiant.com/phase/today/"
html_source = requests.get(moon_url).text
moon_soup = BeautifulSoup(html_source, 'html.parser')
data = moon_soup.find_all('script', {'type' : 'text/javascript'})
for d in data:
d = d.text
if 'var jArray=' in d:
jArray = re.search('\{(.*?)\}', d).group()
moon_data = json.loads(jArray)
print(moon_data)
#if you want mArray data too, you just have to:
# 1. add `'var mArray=' in d` in the if clause, and
# 2. uncomment the following lines
#mArray = re.search('\[+(.*?)\];', d).group()
#print(mArray)
</code></pre>
<p><strong>输出:</strong></p>
^{pr2}$
<hr/>
<p>因为它是作为<code>JSON</code>加载的,所以您可以这样浏览它:</p>
<p><strong>示例代码:</strong></p>
<pre><code>print(moon_data['4'])
print('-')*5
print(moon_data['4'][2])
</code></pre>
<p><strong>输出:</strong></p>
<pre><code>['<b>April 5</b>', '69%\n', 'Sun Angle: 0.53276322269153', 'Sun Distance: 149700928.5008', 'Moon Distance: 373577.14506795', 'Moon Age: 9.1657967733025', 'Moon Angle: 0.53311119464703', 'Waxing Gibbous', 'April 5']
-
Sun Angle: 0.53276322269153
</code></pre>