Python - повторно использовать список файлов в качестве входных данных - PullRequest
0 голосов
/ 18 ноября 2018

Я использую os.walk для поиска рекурсивных html-файлов в папке.
Эти htmls содержат строку. Когда os.walk создает список, я извлекаю эти строки с помощью BeautifulSoup
Я пытаюсь следующий код, но он не работает:

import os 
from bs4 import BeautifulSoup
for root, dirs, files in os.walk ("mydir"):
    for file in files:
        if file.endswith (".html"):
           print(os.path.join(root, file))
soup = BeautifulSoup(os.path.join(root, file), "html.parser")
soup.find all('a')

Как я могу использовать список файлов в качестве входных данных для BeautifulSoup? (и распечатать вывод в текстовом файле)

1 Ответ

0 голосов
/ 18 ноября 2018

os.path.join путь возврата файла, а не содержимого, вам нужно open().

import os 
from bs4 import BeautifulSoup
for root, dirs, files in os.walk ("mydir"):
    for file in files:
        if file.endswith (".html"):
            currentFile = os.path.join(root, file)
            print(currentFile)
            with open(currentFile, 'r') as html:
                soup = BeautifulSoup(html.read(), "html.parser")
                links = soup.find_all('a')
                for link in links:
                    print(link['href'])
...