【问题标题】:Download files using Python 3.4 from Google Patents使用 Python 3.4 从 Google Patents 下载文件
【发布时间】:2015-05-19 10:30:46
【问题描述】:

我想下载(使用 Python 3.4)谷歌专利批量下载页面http://www.google.com/googlebooks/uspto-patents-grants-text.html上的所有 (.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 )

非常感谢您的帮助。

【问题讨论】:

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


    【解决方案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()
    

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

    【讨论】:

    • 谢谢,这对我有很大帮助,这正是我所需要的。唯一的问题是我现在得到一个弹出窗口,询问我是打开还是保存文件。不幸的是,“从现在开始对此类文件自动执行此操作”框显示为灰色,我无法单击它。我尝试包含profile.set_preference("browser.download.panel.shown", False) 或抑制警报,但我无法让它工作。有什么想法吗?
    • 太棒了,就是这样。
    【解决方案2】:

    您正在下载的 html 是链接页面。您需要解析 html 以找到所有下载链接。您可以使用诸如美丽汤之类的库来执行此操作。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-17
      • 1970-01-01
      • 2013-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      相关资源
      最近更新 更多