Я пытаюсь вычистить строки из более чем 1200 файлов .htm, которые находятся на моем жестком диске. На моем компьютере они находятся здесь: file: ///home/phi/Data/NHL/pl07-08/PL020001.HTM. Эти файлы .htm последовательны от * 20001.htm до * 21230.htm. Мой план состоит в том, чтобы в конечном итоге выбросить мои данные в MySQL или SQLite через приложение для работы с электронными таблицами или просто напрямую, если я смогу получить чистый CSV-файл из этого процесса.
Это моя первая попытка скопировать код (Python), и я только что установил Ubuntu 9.04 на свой дерьмовый Pentium IV. Излишне говорить, что я новичок и имею некоторые контрольно-пропускные пункты.
Как мне заставить механизм пройтись по всем файлам в каталоге по порядку. Может ли механизировать даже сделать это? Может ли Mechanize / Python / BeautifulSoup прочитать URL-адрес в стиле file: /// или есть другой способ указать его на /home/phi/Data/NHL/pl07-08/PL020001.HTM? Разумно ли делать это с шагом 100 или 250 файлов или просто отправлять все 1230?
Мне просто нужны строки, которые начинаются с этого "<tr class="evenColor">
" и заканчиваются этим "</tr>
". В идеале мне нужны только те строки, которые содержат «SHOT» | «MISS» | «GOAL», но мне нужна вся строка (каждый столбец). Обратите внимание, что " GOAL " выделено жирным шрифтом, поэтому нужно ли это указывать? В файле htm 3 таблицы.
Также хотелось бы, чтобы имя родительского файла (pl020001.htm) было включено в строки, которые я очищаю, чтобы я мог идентифицировать их в своем собственном столбце в конечной базе данных . Я даже не знаю, с чего начать. Это то, что я до сих пор:
#/usr/bin/python
from BeautifulSoup import BeautifulSoup
import re
from mechanize import Browser
mech = Browser()
url = "file:///home/phi/Data/NHL/pl07-08/PL020001.HTM"
##but how do I do multiple urls/files? PL02*.HTM?
page = mech.open(url)
html = page.read()
soup = BeautifulSoup(html)
##this confuses me and seems redundant
pl = open("input_file.html","r")
chances = open("chancesforsql.csv,"w")
table = soup.find("table", border=0)
for row in table.findAll 'tr class="evenColor"'
#should I do this instead of before?
outfile = open("shooting.csv", "w")
##how do I end it?
Должен ли я использовать IDLE или что-то подобное? просто терминал в Ubuntu 9.04?