我试图找出如何只读取网站中每个网址的网址,每次运行代码时我都会收到错误:
AttributeError:module' urllib'没有属性' urlopen'
我的代码在
下面import os
import subprocess
import urllib
datasource = urllib.urlopen("www.google.com")
while 1:
line = datasource.readline()
if line == "": break
if (line.find("www") > -1) :
print (line)
li = ['www.apple.com', 'www.google.com']
os.chdir('..')
os.chdir('..')
os.chdir('..')
os.chdir('Program Files (x86)\\LinkChecker')
for s in li:
os.system('Start .\linkchecker ' + s)
答案 0 :(得分:1)
似乎是python3X,所以你应该使用
urllib.request.urlopen
答案 1 :(得分:1)
这是一个非常简单的例子。
这适用于Python 3.2及更高版本。
import urllib.request
with urllib.request.urlopen("http://www.apple.com") as url:
r = url.read()
print(r)
供参考,请仔细阅读此问题。 Urlopen attribute error
答案 2 :(得分:0)
AttributeError 是因为它应该是urllib.request.urlopen
而不是urllib.urlopen
。
除了问题中提到的AttributeError
之外,我还遇到了2个错误。
ValueError :未知网址类型:' www.google.com'
解决方案:重写定义datasource
的行,如下所示https
部分:
datasource = urllib.request.urlopen("https://www.google.com")
TypeError :需要类似字节的对象,而不是' str' 在线#39; if(line.find(" www")> -1):`。
整体解决方案代码为:
import os
import urllib
datasource = urllib.request.urlopen("https://www.google.com")
while 1:
line = str(datasource.read())
if line == "": break
if (line.find("www") > -1) :
print (line)
li = ['www.apple.com', 'www.google.com']
os.chdir('..')
os.chdir('..')
os.chdir('..')
os.chdir('Program Files (x86)\\LinkChecker')
for s in li:
os.system('Start .\linkchecker ' + s)