我试图在python中编写代码来下载少量数据,代码适用于一个结构但不适用于其他结构,它给我这个我不明白的错误。我已经在sublime text 3上编写代码并在DOS上运行它。使用的Python版本是2.7.11。
from bs4 import BeautifulSoup
import urllib
import re
url= raw_input("http://physics.iitd.ac.in/content/list-faculty-members")
html=urllib.urlopen(url).read()
soup=BeautifulSoup(html)
table = soup.find("table", attrs={"border":"0","width":"100%","cellpadding":"10"})
head=soup.find("h2",attrs={"class":"title style3"})
ready= table.find_all("tr")
header=head.find("big").find("strong")
datasets=[]
quest=[]
s=[]
test=header.get_text()
quest.append(test)
for b in ready:
x=[td.get_text() for td in b.find_all("td")]
dataset =[strong.get_text() for strong in b.find("td").find("a").find_all("strong")]
datasets.append(dataset)
quest.append(x)
print quest
答案 0 :(得分:2)
它声明cannot find the file specified: ''
这一事实意味着您正在尝试打开空字符串指定的文件!
由于我们没有代码,因此有点难以帮助。您所包含的代码包含的代码不能是生成该屏幕截图的代码,因为屏幕截图会包含显示的提示(raw_input()
调用的参数)。
澄清这一点,如果您输入的字符串实际已输入,则没有问题。
呼叫urlopen()
将依次呼叫FancyUrlOpener.open()
,并且作为UrlOpener
的后代,即接收控制权的功能。
该功能将根据给定的方案智能地选择要使用的功能。
它选择文件方案而不是HTTP方式的事实,以及异常抱怨文件是空字符串的事实意味着你不传入你认为你是什么。
您看到的错误消息以及堆栈跟踪只有在以下行失败时才会出现(请参阅open_local_file()
here):
stats = os.stat(localname)
stat
调用仅适用于本地文件,而不适用于网址。
所以你应该集中精力:为什么字符串是空的?
最有可能的理论是,您提供屏幕截图的代码在raw_input
提示中有一个不同的网址,这就是我们所看到的内容截图中的提示。
这意味着您只需按下ENTER,或许认为它已将该URL作为默认值提供了帮助。那个ENTER将被视为一个emty字符串,它将解释方案选择和用作文件名的空字符串。
答案 1 :(得分:0)
我已将网址复制到测试中:
client
实际上,url可以正确解析为“http”,但是您的错误消息告诉我们您的url被解析为“file”,因此您需要向我们显示您的真实URL或代码。
我的python版本是2.7.5。