2016-01-07 5 views
1

Я пытаюсь скрести конкретную таблицу из: this webpagePython + BeautifulSoup: соскоб конкретную таблицу с веб-страницы

То, что я хочу, чтобы скоблить информация запас. Даты, название компании, соотношение и независимо от того, возможно ли это.

Вот что я до сих пор:

from bs4 import BeautifulSoup 
import urllib2 

url = "http://biz.yahoo.com/c/s.html" 
page = urllib2.urlopen(url) 
soup = BeautifulSoup(page.read()) 

alltables = soup.find_all('table') 

Этот код дает мне все таблицы на странице (Существует более чем один).

1) Я не уверен, как определить таблицу, в которой я нуждаюсь.

2) Я не уверен, как извлечь информацию из этой таблицы в массив или список или какую-либо другую структуру данных, которую я могу использовать для дальнейшего анализа.

+0

Как мы можем знать Ва Вам нужно, если вы сами не знаете? – styvane

+0

Ваша предназначенная таблица является последней таблицей в теге тела. try 'soup.find_all (" table ") [- 1]' – Mortezaipo

ответ

4

Разметку не совсем легко очистить - нет id или специальных атрибутов class, которые вы можете использовать, чтобы различать таблицы друг от друга. Что я буду делать в этом случае состоит в найти ячейку с Payable заголовка и найти первые tableparent:

header = soup.find("b", text="Payable") 
table = header.find_parent("table") 

Затем, вы можете перебрать строки таблицы пропуская первые 2 - заголовок и строку с разделителем :

for row in table.find_all("tr")[2:]: 
    print([cell.get_text(strip=True) for cell in row.find_all("td")]) 

И, вы можете превратить его в список списков:

[[cell.get_text(strip=True) 
    for cell in row.find_all("td")] 
for row in table.find_all("tr")[2:]] 
Смежные вопросы