Python 关于HTML解析的问题
这是我们为html解析编写的程序。 它工作得很好 我们在网上找到了一个演示程序,并根据需要对其进行了修改。 但我们不明白它是如何工作的Python 关于HTML解析的问题,python,parsing,python-3.x,html-parsing,global-variables,Python,Parsing,Python 3.x,Html Parsing,Global Variables,这是我们为html解析编写的程序。 它工作得很好 我们在网上找到了一个演示程序,并根据需要对其进行了修改。 但我们不明白它是如何工作的 import urllib from urllib.request import urlopen address='http://www.iitb.ac.in/acadpublic/RunningCourses.jsp?deptcd=EE&year=2012&semester=1' print(address) source= urlopen
import urllib
from urllib.request import urlopen
address='http://www.iitb.ac.in/acadpublic/RunningCourses.jsp?deptcd=EE&year=2012&semester=1'
print(address)
source= urlopen(address).read()
source=str(source)
from html.parser import HTMLParser
str1 = input('Enter name of prof:')
class MyHTMLParser(HTMLParser):
y=" "
def handle_data(self, data):
flag=0
x=str(data)
for i in range(len(x)):
if (x[i]=='\\'):
flag=1
break
if(flag==0) :
if(x==str1):
global y
print("Name of professor:",x)
print("Name of course:",y)
y=x
parser = MyHTMLParser(strict=False)
parser.feed(source)
我们的问题:
HTMLparser
handle_data
,该函数是如何工作的y
在类本身中,仍然需要global y
handle\u data()
由HTMLParser
代码调用;您的子类将覆盖它以处理文档中的文本数据。通过在MyHTMLParser
实例上调用.feed()
,进程启动
有关完整的API,请参阅文档。如果你真的想知道这一切是如何运作的,你可以试着去理解global y
指的是一个不同的y
变量,该变量位于模块范围内。这行代码表明,该示例的原始开发人员不理解他们在做什么。全局y
行不是唯一的示例;该代码可以通过其他方式变得更具python风格
类范围中的y
定义未使用。handle\u data()
方法应参考self.y
:
class MyHTMLParser(HTMLParser):
y = None
def handle_data(self, data):
if '\\' not in data:
if data == str1:
print("Name of professor:", data)
print("Name of course:", self.y)
self.y = x
这会将每个元素的元素文本存储在self.y
中,如果下一个元素与您的str1
全局变量匹配,那么它也会与教授姓名一起打印