本页使用JavaScript
从服务器读取数据并填充页面。
我看到你使用开发者工具Chrome
- 参见选项卡Network
on XHR
or JS
要求。
我找到了这个网址:
该 url 提供的所有数据几乎都是 JSON 格式
但如果您使用此链接时没有&callback=angular.callbacks._0
然后你得到纯 JSON 格式的数据,你可以使用json
模块将其转换为 python 字典。
EDIT:工作代码
import urllib2
import json
# new url
url = 'http://data.asx.com.au/data/1/company/ACB?fields=primary_share,latest_annual_reports,last_dividend,primary_share.indices'
# read all data
page = urllib2.urlopen(url).read()
# convert json text to python dictionary
data = json.loads(page)
print(data['principal_activities'])
Output:
Mineral exploration in Botswana, China and Australia.
编辑 (2020.12.23)
这个答案已经有近 5 年历史了,是为 Python2 创建的。现在在Python3中它需要urllib.request.urlopen()
or requests.get()
但真正的问题是,五年来这个页面的结构和技术发生了变化。网址(在问题和答案中)不再存在。这个页面需要新的分析和新的方法。
有问题的是网址
http://www.asx.com.au/asx/research/company.do#!/ACB/details http://www.asx.com.au/asx/research/company.do#!/ACB/details
但当前页面使用 url
https://www2.asx.com.au/markets/company/acb https://www2.asx.com.au/markets/company/acb
它使用不同的网址AJAX
,XHR
https://asx.api.markitdigital.com/asx-research/1.0/companies/acb/about https://asx.api.markitdigital.com/asx-research/1.0/companies/acb/about
https://asx.api.markitdigital.com/asx-research/1.0/companies/acb/announcements https://asx.api.markitdigital.com/asx-research/1.0/companies/acb/announcements
https://asx.api.markitdigital.com/asx-research/1.0/companies/acb/key-statistics https://asx.api.markitdigital.com/asx-research/1.0/companies/acb/key-statistics
etc.
您可以使用以下方式找到更多网址DevTools
in Chrome
/Firefox
(tab: Network
, 筛选:XHR
)
import urllib.request
import json
# new url
url = 'https://asx.api.markitdigital.com/asx-research/1.0/companies/acb/about'
# read all data
page = urllib.request.urlopen(url).read()
# convert json text to python dictionary
data = json.loads(page)
print(data['data']['description'])
Output:
Minerals exploration & development