Я знаю, вы сказали, что не можете использовать lxml.html
. Но вот как это сделать, используя эту библиотеку, потому что это очень хорошая библиотека. Поэтому для полноты я предоставляю код, использующий его, поскольку я больше не использую BeautifulSoup
- он не поддерживается, работает медленно и имеет ужасный API.
Приведенный ниже код анализирует страницу и записывает результаты в CSV-файл.
import lxml.html
import csv
doc = lxml.html.parse('http://finance.yahoo.com/q/os?s=lly&m=2011-04-15')
# find the first table contaning any tr with a td with class yfnc_tabledata1
table = doc.xpath("//table[tr/td[@class='yfnc_tabledata1']]")[0]
with open('results.csv', 'wb') as f:
cf = csv.writer(f)
# find all trs inside that table:
for tr in table.xpath('./tr'):
# add the text of all tds inside each tr to a list
row = [td.text_content().strip() for td in tr.xpath('./td')]
# write the list to the csv file:
cf.writerow(row)
Вот и все! lxml.html
так просто и приятно !! Жаль, что ты не можешь использовать это.
Вот несколько строк из сгенерированного файла results.csv
:
LLY110416C00017500,N/A,0.00,17.05,18.45,0,0,17.50,LLY110416P00017500,0.01,0.00,N/A,0.03,0,182
LLY110416C00020000,15.70,0.00,14.55,15.85,0,0,20.00,LLY110416P00020000,0.06,0.00,N/A,0.03,0,439
LLY110416C00022500,N/A,0.00,12.15,12.80,0,0,22.50,LLY110416P00022500,0.01,0.00,N/A,0.03,2,50