使用Python 3.4从Google下载文件

使用Python 3.4从Google下载文件,python,python-3.x,download,web-scraping,Python,Python 3.x,Download,Web Scraping,我想下载(使用Python 3.4)Google专利批量下载页面上的所有(.zip)文件 (我知道这相当于大量数据。)我想在目录[year]中保存一年的所有文件,因此1976年的所有(每周)文件都保存在1976年。我想将它们保存到Python脚本所在的目录中 我尝试过使用urllib.request包,但我可以获得足够的http文本,而不是如何“单击”文件下载它 import urllib.request url = 'http://www.google.com/googlebooks/usp

我想下载(使用Python 3.4)Google专利批量下载页面上的所有(.zip)文件

(我知道这相当于大量数据。)我想在目录[year]中保存一年的所有文件,因此1976年的所有(每周)文件都保存在1976年。我想将它们保存到Python脚本所在的目录中

我尝试过使用
urllib.request
包,但我可以获得足够的http文本,而不是如何“单击”文件下载它

import urllib.request

url = 'http://www.google.com/googlebooks/uspto-patents-grants-text.html'
savename = 'google_patent_urltext'
urllib.request.urlretrieve(url, savename )

非常感谢您的帮助。

您正在下载的html是链接页面。您需要解析html以查找所有下载链接。你可以用一个像BeautifulSoup这样的图书馆来做这件事

但是,页面结构非常规则,因此您可以使用正则表达式获取所有下载链接:

import re

html = urllib.request.urlopen(url).read()
links = re.findall('<a href="(.*)">', html)
重新导入
html=urllib.request.urlopen(url.read())
links=re.findall(“”,html)

据我所知,您正在寻找一个模拟左键单击文件并自动下载的命令。如果是这样,你可以使用硒。 比如:

from selenium import webdriver 
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
profile = FirefoxProfile ()
profile.set_preference("browser.download.folderList",2)
profile.set_preference("browser.download.manager.showWhenStarting",False)
profile.set_preference("browser.download.dir", 'D:\\') #choose folder to download to
profile.set_preference("browser.helperApps.neverAsk.saveToDisk",'application/octet-stream')
driver = webdriver.Firefox(firefox_profile=profile)
driver.get('https://www.google.com/googlebooks/uspto-patents-grants-text.html#2015')
filename = driver.find_element_by_xpath('//a[contains(text(),"ipg150106.zip")]') #use loop to list all zip files
filename.click()

已更新应使用application/octet stream的zip mime类型,而不是“application/zip”。现在它应该可以工作了:)

谢谢,这对我帮助很大,正是我所需要的。唯一的问题是,我现在得到一个弹出窗口,询问我是打开还是保存文件。不幸的是,带有“从现在开始自动为这样的文件执行此操作”的框变灰,我无法单击它。我尝试了包括
profile.set_首选项(“browser.download.panel.show”,False)
或抑制警报,但无法使其工作。有什么想法吗?太好了,就是这样。