使用来自Google Patents的Python 3.4下载文件

时间:2015-05-19 10:30:47

标签: python python-3.x download web-scraping

我想在Google专利批量下载页面下载(使用Python 3.4)所有(.zip)文件http://www.google.com/googlebooks/uspto-patents-grants-text.html

(我知道这相当于大量的数据。)我想在目录 [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 )

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

据我了解,您正在寻找一个模拟左键单击文件并自动下载的命令。如果是这样,您可以使用Selenium。 类似的东西:

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()

<强>已更新! &#39;应用程序/八位字节流&#39;应使用zip-mime类型代替&#34; application / zip&#34;。现在它应该工作:)

答案 1 :(得分:0)

您正在下载的HTML是链接页面。您需要解析html才能找到所有下载链接。你可以使用像美丽汤这样的图书馆来做到这一点。

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

import re

html = urllib.request.urlopen(url).read()
links = re.findall('<a href="(.*)">', html)