这是我要从https://www.google.com/googlebooks/uspto-patents-grants-text.html#2010
下载.zip文件的网页是否有任何Python代码我可以编写和/或使用beautifulSoup下载所有.zip文件,比如2006年?
答案 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)