Ste*_*ead 17 python urllib2 beautifulsoup web-scraping angularjs
我正在尝试从公共站点asx.com.au获取数据
页面http://www.asx.com.au/asx/research/company.do#!/ACB/details包含一个div类"view-content",它包含我需要的信息:
但是当我尝试通过Python查看此页面时urllib2.urlopendiv为空:
import urllib2
from bs4 import BeautifulSoup
url = 'http://www.asx.com.au/asx/research/company.do#!/ACB/details'
page = urllib2.urlopen(url).read()
soup = BeautifulSoup(page, "html.parser")
contentDiv = soup.find("div", {"class": "view-content"})
print(contentDiv)
# the results is an empty div:
# <div class="view-content" ui-view=""></div>
Run Code Online (Sandbox Code Playgroud)
是否可以通过编程方式访问该div的内容?
编辑:根据评论,显示内容通过Angular.js.是否可以通过Python触发该内容的呈现?
fur*_*ras 23
此页面使用JavaScript从服务器和填充页面读取数据.
我看到您在chrome中使用开发人员工具 - 请参阅"XHR"或"JS"请求中的"网络"选项卡.
我找到了这个网址
此URL提供几乎为JSON格式的所有数据
但是如果你使用这个链接,&callback=angular.callbacks._0那么你就可以获得纯JSON格式的数据,你可以使用json模块将它转换为python字典.
编辑:工作代码
import urllib2
from bs4 import BeautifulSoup
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'])
Run Code Online (Sandbox Code Playgroud)
输出:
Mineral exploration in Botswana, China and Australia.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13767 次 |
| 最近记录: |