使用python清理HTML

使用python清理HTML,python,html,Python,Html,我有下面的代码,但我收到一个错误。我试图从Tag1和Tag2之间的html文件中获取文本 如果没有for循环,代码可以工作(对于一个文件),但是当在目录中循环时,代码不能工作 from bs4 import BeautifulSoup from urllib import urlopen import os import bleach import re rootdir = mydirectory for subdir, dirs, files in os.walk(rootdir):

我有下面的代码,但我收到一个错误。我试图从Tag1和Tag2之间的html文件中获取文本 如果没有for循环,代码可以工作(对于一个文件),但是当在目录中循环时,代码不能工作

from bs4 import BeautifulSoup
from urllib import urlopen
import os
import bleach
import re
rootdir = mydirectory
for subdir, dirs, files in os.walk(rootdir):
    for file in files:
        url = file
        print url
        raw = urlopen(url).read()
        type(raw)
        Tag1 = raw.find("""<div class="song-text">""")
        Tag2 = raw.rfind("""<div style="text-align:center;padding-bottom:10px;">""")
        Cleaned = raw[Tag1+23:Tag2]
        print Cleaned
从bs4导入美化组
从urllib导入urlopen
导入操作系统
进口漂白剂
进口稀土
rootdir=mydirectory
对于os.walk(rootdir)中的subdir、dir和文件:
对于文件中的文件:
url=文件
打印url
raw=urlopen(url).read()
类型(原始)
Tag1=原始的。查找(“”)
Tag2=raw.rfind(“”)
清洁=未加工[Tag1+23:Tag2]
打印清洁
错误消息:回溯(最近一次调用上次):文件 “TestClean.py”,第12行,在 raw=urlopen(url.read()文件“/usr/lib/python2.7/urllib.py”,urlopen中的第87行 在open中返回opener.open(url)文件“/usr/lib/python2.7/urllib.py”,第208行 在open_文件中返回getattr(self,name)(url)文件“/usr/lib/python2.7/urllib.py”,第463行 在open_local_文件中返回self.open_local_文件(url)file“/usr/lib/python2.7/urllib.py”,第477行 raise IOError(e.errno,e.strerror,e.filename)IOError:[errno 2]没有这样的文件或目录:“paroles-a-beauty-lie.html”


错误消息表示缺少文件
os.walk
只返回文件名,而不返回文件的完整路径。1) 以
path=os.path.join(subdir,file)
2)读取文件
open(path.Read()
而不使用
urlopen

从回溯中可以清楚地看出,它无法找到“paroles-a-beauty-lie.html”文件。我建议你一步一步地走

  • 注释“打印url”下面的代码
  • 检查您是否获得了正确的url
  • 然后继续你的下一步-寻找过程

  • 我认为你试图在错误的位置打开文件
    url
    只是文件名。您可能需要使用
    os.path.join
    来连接
    subdir
    url
    。顺便说一句,使用HTML解析器解析HTML。