我想提取一个页面中的所有链接,这是我的代码,但它什么都不做,当我打印抓取的页面时,我打印得很好,但对于解析它没有任何作用!!在
from html.parser import HTMLParser
import urllib
import urllib.request
class myParser(HTMLParser):
def handle_starttag(self, tag, attrs):
if (tag == "a"):
for a in attrs:
if (a[0] == "href"):
link = a[1]
if (link.find('http') >= 1):
print(link)
newParser = myParser()
newParser.feed(link)
url = "http://www.asriran.com"
req = urllib.request.Request(url)
response = urllib.request.urlopen(req)
handle = response.read()
parser = myParser()
print (handle)
parser.feed(str(handle))
由于以下两个原因,您的代码不打印任何内容:
link.find('http') >= 1
对于以http
或https
开头的链接永远不会为真。您应该改为使用link.find('http') == 0
或link.startswith('http')
如果您想坚持使用HTMLParser,可以按如下方式修改代码:
否则,我建议切换到Beautiful Soup并像这样解析响应:
^{pr2}$相关问题 更多 >
编程相关推荐