如何使用python从网页下载.zip文件?

时间:2015-11-03 22:30:32

标签: javascript python beautifulsoup information-retrieval

这是我要从https://www.google.com/googlebooks/uspto-patents-grants-text.html#2010

下载.zip文件的网页

是否有任何Python代码我可以编写和/或使用beautifulSoup下载所有.zip文件,比如2006年?

5 个答案:

答案 0 :(得分:1)

更改“yearToGet”以下载指定年份的文件。

from bs4 import BeautifulSoup
from urllib2 import *

yearToGet = '2006'

sourcePage = urlopen(请求('https://www.google.com/googlebooks/patents-grants-text.html')))     soup = BeautifulSoup(sourcePage.read())

links = soup.find_all('a')

for link in links:
    href = link['href']

    if yearToGet in href and '.zip' in href:

        remoteZip = urlopen(Request(href))
        file_name = href.rpartition('/')[-1]
        local_file = open(file_name, 'wb')
        local_file.write(remoteZip.read())
        local_file.close()

答案 1 :(得分:0)

您可以使用urlretrieve,如下所示

import urllib
urllib.urlretrieve ("http://storage.googleapis.com/patents/grant_full_text/2010/ipg100105.zip", "ipg100105.zip")

答案 2 :(得分:0)

您也可以使用wget。

>>> import wget
>>> url = 'http://www.example.com/mp3/mysong.mp3'
>>> filename = wget.download(url)
100% [................................................] 3841532 / 3841532
>>> filename
'mysong.mp3'

答案 3 :(得分:0)

beautifulSoup的问题可能是h3年不是zip链接的父级。

您可以解析html(使用request.get(URL).text)并检查您想要年份的h3并将所有内容保存到下一个h3(或文本结尾)。

然后你可以bs4那个或只是正则表达<a href="something">

答案 4 :(得分:0)

如果要从其他年份下载文件,请修改代码。如果你想更优雅地下载文件,我相信你可以搞清楚,干杯!

from urllib.request import urlopen
from bs4 import BeautifulSoup
import re, webbrowser


html = urlopen("https://www.google.com/googlebooks/uspto-patents-grants-text.html#2010")
soup = BeautifulSoup(html.read(), "html.parser")

#linkList = soup.findAll("a")
linkList = [x.text for x in soup.findAll("a", text=re.compile(""))]

list_2006 = []
for item in linkList:
    if 'ipg06' in item:
        item = item.strip('\n')
        #open the url with the item name appended at the end
        #this will consequently download the files for you!
        webbrowser.open("http://storage.googleapis.com/patents/grant_full_text/2006/"+item)