2012-09-06 46 views
0

當我使用lmxl解析網頁時,LXML-的XPath可以得到目標的一部分,請參閱我的代碼:LXML可以在python解析TR的一部分

import urllib 
import lxml.html 
url="http://sc.hkex.com.hk/gb/www.hkex.com.hk/chi/market/sec_tradinfo/stockcode/eisdeqty_c.htm" 
file=urllib.urlopen(url).read() 
root=lxml.html.document_fromstring(file) 
for company in root.xpath('//tr[@class="tr_normal"]'): 
    print company.text_content().encode('utf-8')   

>>>00325創生控股1,000#     
00326中國星集團50,000#     
00327百富環球1,000 
00328ALCO HOLDINGS2,000#     
00329 
>>> 

有兩個問題:
1爲什麼我只能得到000329?其他的木材丟失了?
2.爲什麼我無法獲得代碼大於000329的公司信息?

enter image description here

+0

您能否給我們提供您正試圖解析的頁面的鏈接?我幾乎無法閱讀屏幕截圖...並且看到源html也可能會有所幫助。 –

+0

也許'.read()'是不完整的;嘗試使用'lxml.html.parse(urllib.urlopen(url))'(注意,不要調用'.read()'調用,將它留給解析器)。 –

+0

url =「http://sc.hkex.com.hk/gb/www.hkex.com.hk/chi/market/sec_tradinfo/stockcode/eisdeqty_c.htm」 –

回答

1

read()不讀取完整的頁面一次。需要迭代上它

從文檔:

讀()方法,如果省略或負的大小參數,可能無法讀取,直到數據流的末尾;在一般情況下,沒有好方法可以確定來自套接字的整個流已被讀取。

+1

我已經嘗試使用lxml.html.parse(urllib .urlopen(url)),這是沒有用的,也許這是一個編碼 –

+0

的問題,或者你可能只需要多次閱讀 – njzk2