因为是百度图片是瀑布流ajax异步上传的数据,所以这里用到抓包工具来抓取链接(fiddler)

好了直接上代码,

 from selenium import webdriver
from selenium.webdriver.common.by import By
import requests,time
from queue import Queue
from urllib import request
import os,gevent
from lxml import etree def get_img(html):
html = html.get() html = etree.HTML(html) img_url = html.xpath('//div[@id="imgid"]/div[last()]//li/@data-objurl')
# print(img_url)
path = './baidupic/'
if not os.path.exists(path):
os.makedirs(path) for url in img_url:
print(url)
# response = requests.get(url)
# img = response.content
try:
fname = url.split('/')[-1]
request.urlretrieve(url,os.path.join(path, fname))
print('下载成功')
except:
print('图片不存在') def get_page():
#创建数据队列
q = Queue() #百度图片搜索地址
base_url = 'https://image.baidu.com/'
#返回浏览器对象
browser = webdriver.Chrome(executable_path=r'C:\Users\zhaozhi\Desktop\chromedriver.exe')
#模拟访问
browser.get(base_url)
#输入搜索关键字
browser.find_element_by_id('kw').send_keys('美女')
#按键
browser.find_element_by_class_name('s_search').click()
# time.sleep(2)
for i in range(10):
browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
# time.sleep(2)
# html = browser.page_source q.put(browser.page_source)
# browser.close()
# print(browser.page_source)
g_list=[]
for i in range(20):
g= gevent.spawn(get_img,q)
g_list.append(g) gevent.joinall(g_list) # browser.save_screenshot('baidupic.png')
# print(browser.page_source)
# browser.find_element(By_) if __name__ == '__main__':
get_page()

selenium实现百度图片爬取的更多相关文章

  1. 爬虫07 /scrapy图片爬取、中间件、selenium在scrapy中的应用、CrawlSpider、分布式、增量式

    爬虫07 /scrapy图片爬取.中间件.selenium在scrapy中的应用.CrawlSpider.分布式.增量式 目录 爬虫07 /scrapy图片爬取.中间件.selenium在scrapy ...

  2. Python爬虫入门教程 26-100 知乎文章图片爬取器之二

    1. 知乎文章图片爬取器之二博客背景 昨天写了知乎文章图片爬取器的一部分代码,针对知乎问题的答案json进行了数据抓取,博客中出现了部分写死的内容,今天把那部分信息调整完毕,并且将图片下载完善到代码中 ...

  3. 使用Selenium&PhantomJS的方式爬取代理

    前面已经爬取了代理,今天我们使用Selenium&PhantomJS的方式爬取快代理 :快代理 - 高速http代理ip每天更新. 首先分析一下快代理,如下 使用谷歌浏览器,检查,发现每个代理 ...

  4. 4k图片爬取+中文乱码

    4k图片爬取+中文乱码 此案例有三种乱码解决方法,推荐第一种 4k图片爬取其实和普通图片爬取的过程是没有本质区别的 import requests import os from lxml import ...

  5. scrapy之360图片爬取

    #今日目标 **scrapy之360图片爬取** 今天要爬取的是360美女图片,首先分析页面得知网页是动态加载,故需要先找到网页链接规律, 然后调用ImagesPipeline类实现图片爬取 *代码实 ...

  6. [Python_scrapy图片爬取下载]

    welcome to myblog Dome地址 爬取某个车站的图片 item.py 中 1.申明item 的fields class PhotoItem(scrapy.Item): # define ...

  7. Python实训day07pm【Selenium操作网页、爬取数据-下载歌曲】

    练习1-爬取歌曲列表 任务:通过两个案例,练习使用Selenium操作网页.爬取数据.使用无头模式,爬取网易云的内容. ''' 任务:通过两个案例,练习使用Selenium操作网页.爬取数据. 使用无 ...

  8. selenium+chrome浏览器驱动-爬取百度图片

    百度图片网页中中,当页面滚动到底部,页面会加载新的内容. 我们通过selenium和谷歌浏览器驱动,执行js,是浏览器不断加载页面,通过抓取页面的图片路径来下载图片. from selenium im ...

  9. Scrapy项目 - 实现百度贴吧帖子主题及图片爬取的爬虫设计

    要求编写的程序可获取任一贴吧页面中的帖子链接,并爬取贴子中用户发表的图片,在此过程中使用user agent 伪装和轮换,解决爬虫ip被目标网站封禁的问题.熟悉掌握基本的网页和url分析,同时能灵活使 ...

随机推荐

  1. cogs249 最长公共子串(后缀数组 二分答案

    http://cogs.pro:8080/cogs/problem/problem.php?pid=pxXNxQVqP 题意:给m个单词,让求最长公共子串的长度. 思路:先把所有单词合并成一个串(假设 ...

  2. CodeForces - 938D-Buy a Ticket+最短路

    Buy a Ticket 题意:有n个点和m条路(都收费),n个点在开演唱会,门票不同,对于生活在n个点的小伙伴,要求计算出每个小伙伴为了看一场演唱会要花费的最小价格: 思路: 这道题我一开始觉得要对 ...

  3. eclipse的properties文件中文被转码问题

    如图所示:首次在properties里打中文注释,结果一输入中文就自动被转码,于是查看了一下项目的编码是UTF-8的,而eclipse中默认的properties文件编码是ISO的,所以修改一下即可 ...

  4. 1044/1045 - Access denied for user 'username'@'yourhost'

    度娘很久都未能解决,大多都是修改配置文件,或是执行如下SQL: update user set Password=password('111111') where `user`='root'; 我本地 ...

  5. IOS集成JPush

    本篇文章采用Xcode手动集成JPush 证书 参考网址:https://docs.jiguang.cn//jpush/client/iOS/ios_cer_guide/ 下载SDK 下载网址:htt ...

  6. mysql中查询字段为null或者不为null的sql语句怎么写?

    在mysql中,查询某字段为空时,切记不可用 = null,而是 is null,不为空则是 is not null select * from table where column is null; ...

  7. Android入门学习教程PDF免费下载

    场景 CSDN: https://blog.csdn.net/badao_liumang_qizhi 博客园: https://www.cnblogs.com/badaoliumangqizhi/ 哔 ...

  8. 微信小程序常用的3种弹窗

    1. 表示操作成功,文字上方会显示一个表示操作成功的图标. wx.showToast({ title: '操作成功!', icon: 'success', duration: 1500 // 提示窗停 ...

  9. windows安装mingw和LuaJIT

    1,安装mingw64 先下载mingw64压缩包(不建议下载exe安装包,在线安装太慢),地址如下: https://nchc.dl.sourceforge.net/project/mingw-w6 ...

  10. python常用内建模块——datetime

    datetime是python处理日期和时间的标准库. 获取当前日期和时间 >>>from datetime import datetime >>>now = da ...