[英]Python Downloading files and images
在給定的頁面源代碼中有幾張圖片和一個word文檔,我試圖通過將它們與我寫的"\\w+\\.\\w{1,4}"
匹配的正則表達式進行匹配來安裝所有這些圖像"\\w+\\.\\w{1,4}"
不?
這段代碼是否正確retrieve = urllib.urlretrieve(i,'C:\\Python27')
這是我的代碼:
import sys, urllib, re
def retriev_files(page):
open_page = urllib.urlopen(page)
contents = open_page.read()
find_files = re.findall("\w+\.\w{1,4}",contents)
for i in find_files:
try:
print " retrieving %s ... " %i
retrieve = urllib.urlretrieve(i,'C:\Python27')
print " done !! "
return retrieve
except urllib.urlretrieve as err:
pass
def main():
print retriev_files("http://www.soc.napier.ac.uk/~40001507/CSN08115/cw_webpage/index.html")
if __name__ == "__main__":
main()
您的代碼有幾個問題
您的正則表達式將捕獲所有內容,其中包括一些字符,然后是一個或多個字符,可能是icon_clown.gif,也可能是電子郵件地址一部分的r.macf。 在這里看看這個著名的答案 ,以了解為什么RegEx不是解析HTML的好方法。 嘗試使用諸如beautifulsoup或最好是Selenium之類的方法從網頁獲取數據。
return retrieve
將只檢索第一個圖像,然后退出函數。 您可以定義一個列表retrieved_images
,然后使用retrieved_images.append(retrieve[0])
並最終返回列表
[0]
的原因)。 第二個參數必須是文件名而不是路徑。 icon_clown.gif
,但它不能為您提供完整路徑,即您需要將page
的URL與RegEx匹配項進行合並,例如 在大多數情況下,例如僅給出相對圖像URL時,以下行可能有效。
urllib.urlretrieve(path[0:path.rfind('/')] + '/' file)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.