当前位置:   article > 正文

Python爬虫:爬取百度图片(selenium模拟登录,详细注释)_python使用 selenium爬取百度图片

python使用 selenium爬取百度图片

1、驱动下载

百度图片这种网站是动态的,即并不是网页中的内容全部存储在源代码中,而是不停地动态刷新,所以需要使用selenium模拟浏览器登录,除了安装selenium库之外,还需要针对不同地浏览器安装不同的驱动。

驱动安装(含网址)传送门在此:

传送门

2、python代码

话不多说,直接上代码,由于是几年前写得代码了,模块化程度很low,各位将就看吧!

  1. 注意代码中存放图片的文件路径。
  2. 运行代码之后,电脑会自动打开浏览器,且会模仿人浏览浏览器的操作,静静看着就好!
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import time
import requests

def getnamepage(name):
    b.get('http://image.baidu.com/')
    search_box=b.find_element_by_id('kw') # 找到搜索框对应的位置(可以在搜索框位置右键查看元素)
    search_box.send_keys(name) # 将搜索关键词输入搜索框
    search_box.send_keys(Keys.ENTER) # 回车
    time.sleep(5) # 休眠5秒钟,可要可不要,休眠的目的是为了防反爬虫

def download(imglist,num):
    ele=b.find_element_by_id('sizeFilter') # 找到选取尺寸的位置
    ActionChains(b).move_to_element(ele).perform() # 鼠标在选择尺寸的位置悬停
    time.sleep(5)
    ele4=b.find_element_by_xpath('//*[@id="sizeFilter"]/div/ul/li[3]') # 找到特大尺寸的位置
    ActionChains(b).move_to_element(ele4).perform() # 鼠标悬停
    time.sleep(5)
    ele4.click() # 鼠标左击,选择最大尺寸
    time.sleep(5)
    
    
    #打开第一张图片,在此界面中点击左右切换图片
    ele1=b.find_element_by_xpath('/html/body/div[2]/div[2]/div[4]/div/ul/li[1]/div[1]/a/img')
    ele1.click()
    b.switch_to.window(b.window_handles[1])#很重要的一步,切换窗口,否则页面找不到元素,python shell里面是b.switch_to_window
    x=1
    for i in range(1,num+1):
        #ele3=b.find_element_by_xpath('/html/body/div[1]/div[2]/div/span[2]/span')
        #ele3.click()
        #time.sleep(3)#为保险起见,设置一个睡眠和爬取的时间差
        
        ele2=b.find_element_by_xpath('//*[@id="currentImg"]') # 找到图片链接所在的字符串
        img=ele2.get_attribute('src') #获取当前图片的url链接
        r=requests.get(img)
        if r.status_code==200: # 判断返回状态码,如果不是200,则无法继续操作
            path='D://study/VGG_16//img/9/%d.jpg'%x # 图片存储路径
            print('正在爬取  '+img)
            with open(path,'wb') as f:
                f.write(r.content)
                time.sleep(1)
                f.close()
                print('爬取成功')
                x+=1
            ele3=b.find_element_by_xpath('/html/body/div[1]/div[2]/div/span[2]/span')
            ele3.click()
            #time.sleep(3)
        #跳到下一张
        else:
            ele3=b.find_element_by_xpath('/html/body/div[1]/div[2]/div/span[2]/span')
            ele3.click()
            time.sleep(1)
            continue
        

if __name__=="__main__":
    b=webdriver.Chrome()
    name='李圣经'#定义要搜索的管检测
    num=500 # 定义搜索数量
    imglist=[]
    getnamepage(name)
    download(imglist,num)
    b.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/801129
推荐阅读
相关标签
  

闽ICP备14008679号