多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

百度图片的动态爬取-自动化测试

更新时间:2022-04-08 09:15:58 作者:多测师 浏览:236

  以前自己写的爬虫只能静态的爬取,经过这几天的学习也摸索出自己的一套动态爬取的方法,分享如下:

百度图片的动态爬取-自动化测试

  首先动态爬取需要了解的知识主要有:Python ,Beautifulsoup4, Selenium

  第一步:使用selenium打开谷歌浏览器驱动

  第二步:打开要访问的网站

  第三不:将selenium打开的网站源码赋给一个对象

  第四步:利用Beautifulsoup4创建soup对象,并解析页面,得到页面数据

  第五步:利用soup对象中的findAll函数提取相应的图片数据

  第六步:将图片数据写入相应的盘中

  第七步:通过selenium模拟鼠标向下滚动,回到第三步,循环执行,直到滚动到所设定的鼠标位置然后退出。

  最后一步退出浏览器

  其实过程很简单,最主要是第三步到第七步,这几步需要循环执行。以下是代码:

  是不是很简单,其实完全可以利用url.request完成这个项目的,不过我还是喜欢selenium提取

  文本代码:

  #necoding="utf-8"

  from selenium import webdriver

  from selenium.webdriver.common.keys import Keys

  from bs4 import BeautifulSoup as bs

  import urllib.request

  import re

  import os

  import time

  #启动谷歌驱动

  driver=webdriver.Chrome()

  #要访问的网站

  driver.get("https://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=detail&fr=&hs=0&xthttps=111111&sf=1&fmq=1505741119622_R&pv=&ic=0&nc=1&z=&se=&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word=%E6%99%AF%E7%94%9C%E5%9B%BE%E7%89%87&oq=%E6%99%AF%E7%94%9C&rsp=0")

  #延时5s是因为页面需要加载时间

  time.sleep(5)

  #count作用是定位滚动条位置

  count=500

  #i为统计图片数量

  i=1

  #当鼠标位置小于4000,执行

  while count<4000:

  #将页面的源码赋值给你一个对象

  html_page=driver.page_source

  #创建Beautifulsoup4对象

  soup=bs(html_page,"html.parser")

  #读取页面图像信息

  imgs=soup.findAll('img',{'src':re.compile(r'https:.*\.(jpg|png)')})

  #延时2s保证信息能够读完

  time.sleep(2)

  #将图片写入到C盘img文件夹下

  for img in imgs:

  print(str(i)+':'+img.get('src')+'\n')

  urllib.request.urlretrieve(img.get('src'),r'C:/img/%s.%s'%(i,img.get('src')[-3:]))

  i+=1

  #延时1s保证图片能够写完

  time.sleep(1)

  #鼠标自动向下滚动(很重要的)

  js="$(document).scrollTop(%d)"%count

  driver.execute_script(js)

  count+=500

  #延时3s保证页面加载完成

  time.sleep(3)

  #清空之前图像链接列表

  imgs=[]

  #等待3s退出浏览器

  time.sleep(3)

  driver.quit()

  以上内容为大家介绍了自动化测试中的百度图片的动态爬取,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部