本文共 1640 字,大约阅读时间需要 5 分钟。
该代码用到了selenium库和request库:
写的思想如下: 1.先用selenium模仿人在 中,对想要的图片进行搜索;图片img标签被超链接a标签所包裹,意思就是你点击图片,其实跳转的就是a标签href那个地址,这一点很关键!!!!!
再就是找一个规律,怎么才可以定位出第一张图片,注意要有普遍性,用XPath肯定是不行的,因为搜索其他图片可能值就会变,而我们的代码要有普遍性。经过观察,我发现a标签的name=pn0 就是个很好的定位标准,无论搜索什么,第一张图片的name都为pn0 3.让浏览器仿照人点击这张图片,也就是访问a标签那个href 然后继续分析该页面的源码:下面就是所有的源码
from selenium import webdriverimport requestsdef looking(mubiao): chrome_driver = 'E:\\chromedriver_win32\\chromedriver.exe' driver = webdriver.Chrome(executable_path = chrome_driver) driver.get('https://image.baidu.com/') driver.find_element_by_id('kw').send_keys(mubiao) driver.find_element_by_class_name('s_search').click() href = driver.find_element_by_name("pn0").get_attribute('href') print(href) return href driver.close()def download(url,n): chrome_driver = 'E:\\chromedriver_win32\\chromedriver.exe' driver = webdriver.Chrome(executable_path = chrome_driver) driver.get(url) for i in range(n): ret = driver.find_element_by_class_name("currentImg").get_attribute("src") response = requests.get(ret) with open(r'E:\Photo\%s.jpg' % (i+1),'wb') as f: print("第",i+1,"张图片下载完毕!!!") f.write(response.content) driver.find_element_by_xpath('//*[@id="container"]/span[2]/span').click() driver.close()if __name__== "__main__": mubiao = input("请输入要下载的图片类型:") n = int(input("请输入下载数量:")) url = looking(mubiao) download(url,n)
下载效果图:
转载地址:http://wfhe.baihongyu.com/