我正在使用python来抓取网页而我正在迭代地进行 - 所以我使用3个html文件来存储网页,但不知怎的,我发现这些文件没有被覆盖,我仍然得到旧文件。这是我正在使用的代码:
def Vals(a,b):
file1="C:\\Users\\YAS_ayush\\Desktop\\dataset_recommendation\\file1.html"
file2="C:\\Users\\YAS_ayush\\Desktop\\dataset_recommendation\\file22.html"
file3="C:\\Users\\YAS_ayush\\Desktop\\dataset_recommendation\\file33.html"
Query1='"http://scholar.google.com/scholar?q=%22'+a+'%22&btnG=&hl=en&as_sdt=0%2C24"'
URL1='wget --user-agent Mozilla '+Query1+' -O '+file1
Query2='"http://scholar.google.com/scholar?q=%22'+b+'%22&btnG=&hl=en&as_sdt=0%2C24"'
URL2='wget --user-agent Mozilla '+Query2+' -O '+file2
Query3='"http://scholar.google.com/scholar?q=%22'+a+'%22+%22'+b+'%22&btnG=&hl=en&as_sdt=0%2C24"'
URL3='wget --user-agent Mozilla '+Query3+' -O '+file3
## print Query1
## print Query2
## print Query3
##
## print URL1
## print URL2
## print URL3
os.system("wget "+ URL1)
os.system("wget "+ URL2)
os.system("wget "+ URL3)
f1 = open(file1,'r+')
f2 = open(file2,'r+')
f3 = open(file3,'r+')
S1=str(f1.readlines())
start=S1.find("About")+6
stop=S1.find("results",start)-1
try:
val1=float((S1[start:stop]).replace(",",""))
except ValueError:
val1=Reads('C:\\Users\\YAS_ayush\\Desktop\\dataset_recommendation\\file1.html')
S1=str(f2.readlines())
#f2.close()
start=S1.find("About")+6
stop=S1.find("results",start)-1
try:
val2=float((S1[start:stop]).replace(",",""))
except ValueError:
val2=Reads('C:\\Users\\YAS_ayush\\Desktop\\dataset_recommendation\\file22.html')
S1=str(f3.readlines())
#f3.close()
start=S1.find("About")+6
stop=S1.find("results",start)-1
try:
val3=float((S1[start:stop]).replace(",",""))
except ValueError:
val3=Reads('C:\\Users\\YAS_ayush\\Desktop\\dataset_recommendation\\file33.html')
f1.truncate()
f2.truncate()
f3.truncate()
f1.close()
f2.close()
f3.close()
return (val1,val2,val3)
任何人都可以判断关闭文件时是否存在错误,或者如何为我的目的关闭它们。
由于
答案 0 :(得分:0)
您正在使用-O
(大写O)选项,该选项将所有内容连接到1个文件。
' - O档' '--output文档=文件
文档不会写入相应的文件,但所有文件将连接在一起并写入文件。如果' - '用作文件,文档将打印到标准输出,禁用链接转换。 (使用'./-'打印到名为' - '的文件。) 使用'-O'并不意味着简单地“使用名称文件而不是URL中的文件;”而是类似于shell重定向:
wget -O file http://foo
旨在像wget -O - http://foo > file
一样工作;文件将被立即截断,所有下载的内容都将被写入。因此,'-O'(用于时间戳检查)不支持与'-O'结合使用:因为文件总是新创建的,所以它总是会有一个非常新的时间戳。如果使用此组合,将发出警告。
同样,将“-r”或“-p”与“-O”一起使用可能无法正常工作:Wget不会将第一个文件下载到文件中,然后将其余文件下载到正常名称:全部下载内容将被放入文件中。这在版本1.11中已禁用,但已在1.11.2中恢复(带有警告),因为在某些情况下,此行为实际上可以有一些用处。
请注意,只有在下载单个文档时才允许与'-k'组合使用,因为在这种情况下,它只会将所有相对URI转换为外部URI; '-k'在多个URI全部下载到单个文件时没有任何意义; '-k'只能在输出为常规文件时使用。
此代码段取自wget's manual。
希望这有帮助。