gpt4 book ai didi

python - 从解析的 HTML 中删除转义序列

转载 作者:行者123 更新时间:2023-12-04 16:20:41 25 4
gpt4 key购买 nike

我正在使用 Python mechanize模块向网站提交一个简单的查询,然后分解返回的元素以获取我需要的数据。但我似乎无法正确处理传回的转义序列。这是我的代码:

def stripEscape(string):    #credit goes to sarnold
delete = ""
i=1
while (i<0x20):
delete += chr(i)
i += 1
t = string.translate(None, delete)
return t

def getHTML(metID):
br = mechanize.Browser()
response = br.open("http://urlgoeshere.com")

br.form = list(br.forms())[0]
br["PROMPT12"] = metID

response = br.submit()
htmlText = response.read()
parseHTML(htmlText)

def parseHTML(htmlText):
htmlText.index('table')
arr = re.split(r'(</?\w{2}>)',htmlText) # everything after background tag
logFile = open('Log.txt','wb')

for ele in arr:
ele = stripEscape(ele)
if ele == '':
arr.remove(ele)

for ele in arr:
logFile.write("ele: "+ele+'\n')
if re.match('/table', ele):
logFile.write("END OF TABLE FOUND")
logFile.write("\nele: "+ele+'\n')
break
# other element filters

当我通过交互式 shell 传递参数时,stripEscape 函数工作得很好,但来自网站的数组元素之一是 \r\n</table>\r\n ,这“逃脱”了我的过滤器。它被写入我的日志文件,如下所示:
ele: normal
ele: stuff
ele:
</table>

ele: more
ele: normal

绕过过滤器的结束表标签导致我所有其他过滤器失控。有没有更好的方法来处理转义序列?

最佳答案

您在第一个 for 循环中的 ele 元素不会保存到数组中。

for ele in arr:
ele = stripEscape(ele)
if ele == '':
arr.remove(ele)

这部分代码只会改变 ele元素 不是 arr . arr将保持不变。所以所有的转义序列都会 不是 被删除。您可以通过打印 arr 来测试它在那个循环之后。

所以你需要做的是将它保存为一个新数组,然后可以被下一个循环使用。它可以是这样的:
for ele in arr:
if ele != "":
newArray.append(stripEscape(ele))


for ele in newArray:
logFile.write("ele: "+ele+'\n')
if re.match('/table', ele):
logFile.write("END OF TABLE FOUND")
logFile.write("\nele: "+ele+'\n')
break

关于python - 从解析的 HTML 中删除转义序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18859115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com