2016-12-03 2 views
0

При рассмотрении решения для развернутого строительства Csv о HTML таблиц я наткнулся на этот бит кодаКак re.compile выполняет функцию find_all в BeautifulSoup?

ол = карта (текст_ячейки, row.find_all (re.compile ('T [дк]')))

Что именно происходит в жирном тексте? find_all делает вызовы для элементов и тегов html. Как получается полужирный текст?

контекст ниже

#!/usr/bin/python 
from bs4 import BeautifulSoup 
import sys 
import re 
import csv 

def cell_text(cell): 
    return " ".join(cell.stripped_strings) 

soup = BeautifulSoup(sys.stdin.read()) 
output = csv.writer(sys.stdout) 

for table in soup.find_all('table'): 
    for row in table.find_all('tr'): 
     col = map(cell_text, row.find_all(re.compile('t[dh]'))) 
     output.writerow(col) 
    output.writerow([]) 

ответ

1

Он находит все T, а затем двойки или Эйч. re.compile просто возвращает «скомпилированный» объект регулярного выражения, который потребляет find_all.

Вот документ для re.compile; и BeautifulSoup's find_all может принимать регулярное выражение; вот sample from the documentation:

for tag in soup.find_all(re.compile("^b")): 
    print(tag.name) 

Используется очень похоже, как вы можете видеть

+0

Brilliant. Спасибо за ссылку. –

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