2015-02-25 2 views
0

Я пытаюсь очистить часть данных с китайского сайта. На сайте я хочу, чтобы очистить это: http://data.10jqka.com.cn/market/yybzjsl/HTZQGFYXGSCDSJLZQYYBСкремблирование таблицы данных с китайского веб-сайта с использованием Python

Я хочу получить всю таблицу данных ниже:

enter image description here

Есть 86 страниц. Код ниже не подходит. Может кто-нибудь дать мне руку?

import urllib2, pandas,json 

baseurl="http://data.10jqka.com.cn/interface/market/yybzjsl/desc/%s/20/" 
def getdata(pgnum): 
    cururl = baseurl % str(pgnum) 
    ##print cururl 
    cn=urllib2.urlopen(cururl) 
    jstbl=json.load(cn,encoding='gbk')['data'] 
    return pandas.read_html('<table>'+jstbl+'</table>')[0] 

dataout=pandas.DataFrame() 
for pgnum in range(86): 
    print pgnum 
    totaltry=0 
    while True: 
     try: 
      curdata=getdata(pgnum+1) 
      curdata['pgnum']=pgnum+1 
      break 
     except: 
      totaltry+=1 
      print 'failed: %s' % totaltry 
    dataout=dataout.append(curdata, ignore_index=True) 

dataout.to_csv('~/Desktop/dataout.csv') 

ответ

1

Я предложил бы использовать Beautiful Soup сделать выскабливание.

UPDATE: что-то вроде этого (но я бы рекомендовал смотреть на документацию BS4 для того, как на самом деле использовать его) ...

import urllib 
from bs4 import BeautifulSoup, SoupStrainer 

baseurl="http://data.10jqka.com.cn/market/yybzjsl/HTZQGFYXGSCDSJLZQYYB" 
page = urllib.urlopen(baseurl) 
getonly = SoupStrainer('table') 
table = BeautifulSoup(page, parse_only=getonly) 

for row in table("tr"): 
    text = ''.join(row.findAll(text=True)) 
    data = text.strip() 
    print data 

получает вас:

...  
2015-02-04 
吴通通讯 
日换手率达20%的证券 
10.02% 
买入 
3489.00 
1084.38 
7.43% 
通信设备 
2015-02-03 
赢时胜 
日换手率达20%的证券 
5.57% 
卖出 
1065.53 
646.77 
6.07% 
计算机应用 
2015-01-30 
京天利 
日涨幅偏离值达7%的证券 
10.00% 
买入 
2363.95 
1698.03 
13.68% 
计算机应用 
+0

Можете ли вы дать мне код, чтобы сделать это? Спасибо! –

+0

Это потрясающе! Но можете ли вы написать код, чтобы отказаться от всех страниц не только на первой странице? –

2

Существует несколько питон рамки для веб-соскабливания. Взгляните на Scrapy и Grab. У обоих есть онлайн-документация и учебные пособия.

Смежные вопросы