我想在html文件中匹配。这是html:
<td>
<b>BBcode</b><br />
<textarea onclick='this.select();' style='width:300px; height:200px;' />
[URL=http://someimage.com/LwraZS1] [IMG]http://t1.someimage.com/LwraZS1.jpg[/IMG][ [/URL] [URL=http://someimage.com/CDnuiST] [IMG]http://t1.someimage.com/CDnuiST.jpg[/IMG] [/URL] [URL=http://someimage.com/Y0oZKPb][IMG]http://t1.someimage.com/Y0oZKPb.jpg[/IMG][/URL] [URL=http://someimage.com/W2RMAOR][IMG]http://t1.someimage.com/W2RMAOR.jpg[/IMG][/URL] [URL=http://someimage.com/5e5AYUz][IMG]http://t1.someimage.com/5e5AYUz.jpg[/IMG][/URL] [URL=http://someimage.com/EWDQErN][IMG]http://t1.someimage.com/EWDQErN.jpg[/IMG][/URL]
</textarea>
</td>
我想从[to]中提取所有BB代码。
这是我的代码:
import re
x = open('/xxx/xxx/file.html', 'r').read
y = re.compile(r"""<td> <b>BBcode</b><br /><textarea onclick='this.select();' style='width:300px; height:200px;' />. (. *) </textarea> </td>""")
z = y.search(str(x())
print z
但是当我运行这个时我得到无对象......错误在哪里?
答案 0 :(得分:0)
我认为你需要添加类似z.group()的内容才能退出正则表达式对象,对吧?所以,只需将最后一行更改为
print z.group()
可能会这样做。
答案 1 :(得分:0)
import re
x = open('/xxx/xxx/file.html', 'rt').read()
r1 = r'<textarea.*?>(.*?)</textarea>'
s1 = re.findall(r1, s, re.DOTALL)[1] # just by inspection
r2 = r'\[(.*?)\]'
s2 = re.findall(r2, s1)
for u in s2:
print(u)
答案 2 :(得分:0)
我会使用解析器:
from html import HTMLParser
class MyHtmlParser(HTMLParser):
def __init__(self):
self.reset()
self.convert_charrefs = True
self.dat = []
def handle_data(self, d):
self.dat.append(d.strip())
def return_data(self):
return self.dat
>>> with open('sample.html') as htmltext:
htmldata = htmltext.read()
>>> parser = MyHtmlParser()
>>> parser.feed(htmldata)
>>> res = parser.return_data()
>>> res = [item for item in filter(None, res)]
>>> res[0]
'BBcode'
>>>