如何下载网页上的所有图片并按原名保存?
我写了一个小的Python脚本,用来通过selenium从网站上下载一张图片:
from selenium import webdriver
import urllib.request
class FirefoxTest:
def firefoxTest(self):
self.driver=webdriver.Firefox()
self.driver.get("http://www.sitew.com")
self.r=self.driver.find_element_by_tag_name('img')
self.uri=self.r.get_attribute("src")
self.g=urllib.request.urlopen(self.uri)
with open("begueradj.png",'b+w') as self.f:
self.f.write(self.g.read())
if __name__=='__main__':
FT=FirefoxTest()
FT.firefoxTest()
我该怎么修改我的代码,以便:
- 下载网页上的所有图片?
- 不为我下载的图片命名,而是保留它们的默认名称?
2 个回答
1
你可以使用Ruby的一个库叫nokogiri来打开网页,并通过它们的xpath来下载图片。
require 'open-uri'
require 'nokogiri'
f = open('sample.flv')
begin
http.request_get('/sample.flv') do |resp|
resp.read_body do |segment|
f.write(segment)
end
end
ensure
f.close()
end
2
你需要使用 find_elements_by_tag_name
这个方法。对于下载文件,我建议使用 urllib.urlretrieve()
- 这个方法会自动从网址中提取文件名:
images = self.driver.find_elements_by_tag_name('img')
for image in images:
src = image.get_attribute("src")
if src:
urllib.urlretrieve(src)