Найти - Пользователи
Полная версия: Парсинг, группы и регулярные выражения...
Начало » Python для экспертов » Парсинг, группы и регулярные выражения...
1 2
офян
Пробую все таки супом… хтмл обрезал и время построения дерева уменьшилось до 2-3 сек, что приемлемо…

html_start = "<HTML><BODY>"
html_end = "</BODY></HTML>"

html_full = html_start + htmlSource[kkk:iii] + "</table>" + html_end

soup = BeautifulSoup(html_full)

for table in soup:
rows = table.findAll('tr')
for tr in rows:
cols = tr.findAll("td", text=re.compile(">([\w\d]+?)<", re.S|re.I|re.UNICODE))
for td in cols:
print td
print "-----------------------------"
Только условие ">(+?)<" работать не слишком хотит…=(… а вроде должно…
pasaranax
офян
Только условие ">(+?)<" работать не слишком хотит…sad… а вроде должно…
Это условие включает только буквы и цифры без пробелов, а у тебя там и пробелы и знаки препинания. Пожалуй подойдет вот так: ">(+?)<".

добавлено:
параметр text ищет в супе только содержимое тэгов, поэтому треугольные скобки не нужны, и можно сделать более мягкое условие. Вот мой код:
import time
import re
from BeautifulSoup import BeautifulSoup

start = time.time()

html = open("html").read()
soup = BeautifulSoup(html)

for table in soup.findAll("table"):
rows = table.findAll("tr")
for tr in rows:
cols = tr.findAll("td", {"class": "row"},
text=re.compile("\S+?", re.I | re.U))
for td in cols:
print td
print "-----------------------------"
print "============================"

print "time:", time.time() - start, "sec"
1.7-1.8 сек работает.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB