我正在为python使用一个库ABPY(libraryhere),但我认为它是在旧版本中。我使用的是python3.3。 我确实修复了一些打印错误,但我知道的就这么多了,我对编程真的很陌生。在
我想获取一些网页,过滤广告,然后再打印一次。在
在Sg'te'gmuj告诉我如何从python 2.x转换为3.x后编辑了这是我的新代码:
#!/usr/local/bin/python3.1
import cgitb;cgitb.enable()
import urllib.request
response = urllib.request.build_opener()
response.addheaders = [('User-agent', 'Mozilla/5.0')]
response = urllib.request.urlopen("http://www.youtube.com")
html = response.read()
from abpy import Filter
with open("easylist.txt") as f:
ABPFilter = Filter(file('easylist.txt'))
ABPFilter.match(html)
print("Content-type: text/html")
print()
print (html)
现在它显示一个空白页
只是瞥了一眼图书馆,看起来文件易用列表.txt“不存在;您需要创建该文件,并用适当的筛选器填充它(无论ABP指定什么格式)。在
此外,它似乎需要一个file对象;请尝试类似于以下内容的方法:
我不能说这是完全正确的,因为我没有使用库的经验,但是看看它的代码,我会怀疑这两个问题中的任何一个,如果不是两者都有。在
附录1
更深入地查看代码,我不得不承认,即使我提供的修复确实有效,您也会遇到更多的问题(正如您所建议的,当您使用3.x时,它在2.x中)。我建议使用Python的2to3函数,将典型的python2代码转换为python3代码(尽管这不是万无一失的)。命令行如下:
^{pr2}$这将把它从Python2.x代码转换为3.x代码,并重新编写源文件。在
附录2
传递file对象的代码应该是“f”变量,如上所示(修改后表示这个变量;我没有注意,只是在参数中保留了旧的file函数调用)。在
还需要将URI传递给函数:
您需要修改代码以将这些项传递到数组中(至少我是这样认为的);我现在正在使用它看看。Python在处理错误时使用的不是错误abpy.py,这很好,因为这表明这是正确的思路)。在
代码筛选器.match函数如下(使用2to3 Python脚本后):
这意味着,目前,您需要对功能进行编程;这个模块似乎只指示规则。然而,这仍然有用。在
这意味着您将不得不修改这个函数以使用HTML代替“url”参数。您将正则化HTML(这可能是相当密集的)为一个uri列表,然后通过匹配循环运行每个项,从那里开始实际过滤节点,我不确定;但是有一个过滤器类型的列表,所以我假设有一个典型的ABP过程来删除节点(可能,在某些情况下,只需从HTML中删除给定的URI在
相关问题 更多 >
编程相关推荐