2

これが私のコードです:

import urllib2
from bs4 import BeautifulSoup

url = "http://www.sec.gov/Archives/edgar/data/1288776/000119312512312575/goog-20120630.xml"

req = urllib2.Request(url, "r")
response = urllib2.urlopen(req)
xml = response.read()

soup = BeautifulSoup(xml, features="xml")
print soup.prettify()

出力には、ターゲットからの XML の最初の数行のみが表示されます。

>>> 
<?xml version="1.0" encoding="utf-8"?>
<!-- EDGAR Online I-Metrix Xcelerate Instance Document, based on XBRL 2.1  http://www.edgar-online.com/ -->
<!-- Version:  6.17.6 -->
<!-- Round: 8321e8af-cc4a-498e-a38d-da694ed77a41 -->
<!-- Creation date: 2012-07-24T16:17:46Z -->
<xbrl xmlns="http://www.xbrl.org/2003/instance" xmlns:country="http://xbr" xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:xbrll="http://www.xbrl.org/2003/linkbase" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>

すべての XML を抽出する方法はありますか?

4

2 に答える 2

0

オープナーを使ってみましたか?

import urllib2
from BeautifulSoup import BeautifulSoup

url = "http://www.sec.gov/Archives/edgar/data/1288776/000119312512312575/goog-20120630.xml"

opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]  
resource = opener.open(url)
data = resource.read()
resource.close()
soup = BeautifulSoup(data)
print soup.prettify()

上記のコードは私のために働きます。

于 2012-08-07T11:09:02.457 に答える
0

私は実際にこれに出くわしましたが、FTP 経由で SEC Web サイトから完全な SGML ドキュメントを取得し、ディスクから読み取った後です。私が持っていた:

soup = bs4.BeautifulSoup(xbrl, ["lxml", "xml"])

私はそれを次のように変更しました:

soup = bs4.BeautifulSoup(xbrl, "lxml")

...そして、すべての XML を取得できました。あなたの問題は、BeautifulSoup 関数呼び出しの追加の 'features="xml"' コードにあると思いますか? これは、BeautifulSoup() 関数呼び出しに追加の引数がない Inbar Rose の回答と一致しています。

幸運を!

于 2013-08-11T18:52:54.130 に答える