作者lexus7310 (Fox)
看板Python
标题[问题] 有关HTMLParser
时间Thu Nov 9 00:04:21 2017
import urllib.request
from html.parser import HTMLParser
class MyHTMLParser(HTMLParser):
#orverride方法来做条件判断
def __init__(self):
HTMLParser.__init__(self)
self.isNumber= 0
self.list= [ ]
def handle_data(self, data):#解析网页资料
if self.isNumber== 1:
#print('有资料')
self.list.append(data)
self.isNumber= 0
def handle_starttag(self, tag, attrs):#解析网页起始标签
if tag == 'a' and attrs == [('target','_blank')]:
#print('有属性')
self.isNumber= 1
def handle_endtag(self, tag):#解析网页结束标签
pass
data = urllib.request.urlopen('
https://tw.yahoo.com/')#向网页发出请求
content = data.read().decode('utf-8')#撷取网页资料
data.close( )#关闭连线
#print(content)
myparser = MyHTMLParser()
myparser.feed(content)#feed()会依 HTML文件内标签的顺序依序处理
#print(myparser.list)
print(myparser.list ,file=open('data.txt','w',encoding='utf-8'))#写入data.txt'
程式码如上,我想请问为何我在handle_starttag的function里面
只要加上attrs == [('target','_blank')]的描述,我的if条件式就永远不会成立,谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.160.203.167
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1510157064.A.FDD.html
※ 编辑: lexus7310 (1.160.203.167), 11/09/2017 00:06:36
1F:→ stucode: attrs == [('target', '_blank')] 会找到「只有」 11/09 01:16
2F:→ stucode: target="_blank" 属性的元素。一直不成立表示该页面没有 11/09 01:17
3F:→ stucode: 符合这个条件的元素。如果想找所有包含该属性的元素, 11/09 01:17
4F:→ stucode: 请用 ('target', '_blank') in attrs。 11/09 01:17
5F:→ lexus7310: 懂了 感谢 11/09 22:53