2014-11-04 3 views
0

Я хочу очистить веб-страницу, чтобы собрать данные для изучения интеллектуального анализа данных. Эти веб-данные содержат большую таблицу с 43 страницами. И он также скрывает некоторые запасы в самой правой части меню расширения.Как очистить веб-таблицу несколькими страницами с помощью R или Python

enter image description here

На веб-странице ниже.

http://data.10jqka.com.cn/market/longhu/yyb/

import bs4 
import requests 


url = r"http://data.10jqka.com.cn/market/longhu/yyb/" 

response = requests.get(url) 
if response.status_code == 200: 
    content = response.content 

soup = bs4.BeautifulSoup(content) 
table_results = soup.findAll("table", {"class": "m_table"}) 
for item in table_results: 
    company_name = item.findAll("td", {"class": "tl"})[0].text.strip() 
    detail = item.findAll("td", {"class": "tc"})[0].text.strip() 
    c_rise = item.findAll("td", {"class": "c_rise"})[0].text.strip() 
    c_fall = item.findAll("td", {"class": "c_fall"})[0].text.strip() 
    cur = item.findAll("td", {"class": "cur"})[0].text.strip() 
    lhb_stocklist = item.findAll("div", {"class": "lhb_stocklist"})[0].text.strip() 
    print company_name, detail, c_rise, c_fall, lhb_stocklist 
+0

Прямо сейчас, что вы наделали? Любой код? – Eric

+0

@ yan9yu, я попробовал R с XML и Curl. Rcause Я сильнее в R, чем Python. Но я до сих пор не знаю, как очистить этот стол. Я буду обновлять свой код одновременно с попыткой. –

+0

@ yan9yu, привет, ты можешь дать мне руку, спасибо! –

ответ

0

Раствор на основе requests, BeautifulSoup и lxml:

import json 
import requests 
from bs4 import BeautifulSoup 

URL = 'http://data.10jqka.com.cn/interface/market/longhuyyb/stocknum/desc/%d/20' 
# config end_page as needed, or parse http://data.10jqka.com.cn/market/longhu/yyb/ to make it auto adapted 
end_page = 2 

result = [] 
for page_idx in range(1, end_page + 1): 
    print 'Extracting page', page_idx 
    raw_response = requests.get(URL % page_idx) 
    page_content = json.loads(raw_response.text)['data'] 
    html = BeautifulSoup(page_content, 'lxml') 
    for row in html.tbody.find_all('tr'): 
     company = row.find(class_='tl').text 
     detail_link = row.find(class_='tl').a['href'] 
     buy = float(row.find(class_='c_rise').text) 
     sell = float(row.find(class_='c_fall').text) 
     stock_cnt = int(row.find(class_='cur').text) 
     stocks = [] 
     for a in row.find(class_='lhb_stocklist_box hide').p.find_all('a'): 
      stocks.append((a.text, a['href'])) 
     result.append({ 
      'company': company, 
      'detail_link': detail_link, 
      'buy': buy, 
      'sell': sell, 
      'stock_cnt': stock_cnt, 
      'stocks': stocks, 
     }) 

print 'Company number:', len(result) 

Я положил все данные в список словарей, для легкого доступа. Вы можете изменить коды для прямой записи в CSV или что угодно

+0

, я только что обновил свой код выше. Я запускаю ваш код, и ваш код не совсем я хочу, кроме использования «当月». Можете ли вы запустить мой код, чтобы вы могли понять, чего я хочу. Благодаря! –

+0

Как я уже видел, разница в том, что вы используете «http://data.10jqka.com.cn/market/longhu/yyb/». Этот URL-адрес может содержать только записи на первой странице, не так ли? Итак, вы уже решили свою проблему? – ZZY

+0

почти, я имею в виду, можете ли вы добавить код для записи.to csv на рабочий стол? –

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

  • Нет связанных вопросов^_^