selenium+chrome 爬取淘女郎页面

分析https://www.taobao.com/markets/mm/mmku 这个页面,右键查看网页源代码搜索 img 竟然找不到图片标签,可以猜测是ajax异步加载,所以爬取页面难度升级了,目前有两种方法

  1. 分析网页请求,写接口来处理
  2. 利用selenium 模拟浏览器登录

本次利用第二种方法,需求是先安装selenium 和 chromedriver (一定要下3.4版本以上的,不然会报错 element cant click)

爬虫思路

既然可以模拟浏览器了,那么异步加载就不是问题,img会被渲染到请求的html里面,现在只需要处理翻页问题了,因为一页只有几张图片。用chrome的检查元素功能,找到翻页栏,页数(class:skip-wrap),的class或者是id,利用By进行元素定位后模拟点击,存储图片就好啦,简单暴力。

#-*- coding:utf-8 -*-
'''Zheng 's BUG'''
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import os
class Crawl(object):# 获取首页的页面信息def getMMsInfo(self):url = 'https://www.taobao.com/markets/mm/mmku'#chromedriver一定要3.4以上的,不然会出现element 不能点击的错误driver = webdriver.Chrome(executable_path="C:\Program Files (x86)\Google\Chrome\Application\chromedriver")driver.get(url)try:#等到页面跳转条加载完毕WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME,"skip-wrap"))) # 查看10秒内,是否有页码部分出现print("成功提取页码")#通过pagesource传给soupsoup = BeautifulSoup(driver.page_source, "html.parser")# 获取到了全部的页数pageNum = soup.find('span',class_ = "skip-wrap").find('em').textprint("页码:"+pageNum)print("开始爬取头像!")# 同时得保存第一出现的图片,因为当前页是不能点击的,所以第一次不能通过点击完成# 每个mm的信息都在一个consli里mms = soup.find_all('div', class_="cons_li")# 对于每一个mm对象,获取其名字和头像self.saveMMS(mms)# 从第2页开始便利点击for i in range(2,int(pageNum)):# 点击当前页# 防止element不能点击,这里加了一个等待元素出现element = WebDriverWait(driver, 3).until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, str(i))))#curpage = driver.find_element_by_partial_link_text(str(i))print(i)element.click()# 等待当前页加载完成pics = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.CLASS_NAME,"skip-wrap")))# 获取网页内容soup = BeautifulSoup(driver.page_source,"html.parser")mms = soup.find_all('div',class_ = "cons_li")# 对于每一个mm对象,获取其名字和头像self.saveMMS(mms)print("当前完成:第"+str(i)+"页")finally:driver.quit()#一页的mm的li信息def saveMMS(self,mms):for mm in mms:name = mm.find('div', class_="item_name").find("p").text#get("src")和arrts["src"]img = mm.find('div', class_='item_img').find('img').get("src")# 如果路径不存在,设置存储路径dirpath = os.getcwd() + "\\美人\\"if not os.path.exists(dirpath):os.makedirs(dirpath)namepath = os.getcwd() + "\\美人\\" + name + ".jpg"self.saveImg(img, namepath)# 保存一张照片def saveImg(self, imageURL, fileName):if imageURL is None:returnif 'http' not in imageURL: #去掉src不格式的图片return#流获得图片url内容u = requests.get(imageURL,stream = True).contenttry:with open(fileName,'wb') as jpg:jpg.write(u)except IOError:print("写入图片错误!")# 开始函数def start(self):print("抓起淘女郎-美人库第一页的内容,并存储于 美人 文件夹下")self.getMMsInfo()print("下载完成!")tbmm = Crawl()
tbmm.start()

python3爬取淘女郎图片相关推荐

  1. python3爬取百度图片

    python3爬取百度图片 最终目的:能通过输入关键字进行搜索,爬取相应的图片存储到本地或者数据库 首先打开百度图片的网站,搜索任意一个关键字,比如说:水果,得到如下的界面 分析: 1.百度图片搜索结 ...

  2. 使用python3爬取美女图片

    给大佬们观赏观赏,爬取美女图片,各位大佬们小心身子哈. #目标:爬取网页所有图片并保存到本地 #目标url = http://www.umei.cc/tags/meishaonv_1.htm impo ...

  3. [python3.6]爬虫实战之爬取淘女郎图片

    原博主地址:http://cuiqingcai.com/1001.html 原博是python2.7写的,并且随着淘宝代码的改版,原博爬虫已经不可用. 参考 http://minstrel.top/T ...

  4. python3爬取1024图片

    这两年python特别火,火到博客园现在也是隔三差五的出现一些python的文章.各种开源软件.各种爬虫算法纷纷开路,作为互联网行业的IT狗自然看的我也是心痒痒,于是趁着这个雾霾横行的周末瞅了两眼,作 ...

  5. [Python3] 爬取百度图片到本地

    前言 因为需要一些图片素材,又不想一个个手动下载,遂通过爬虫来解放双手.在百度图片中搜索"汉服美女",然后以浏览器地址栏上的地址作为初始 URL.通过对 URL 分析知道 URL ...

  6. python3 爬取淘女郎照片

    博主初学python,想写个爬虫练练手.在实验楼找了个项目爬淘女郎照片,不过原文代码有些问题我做了些修改 原文链接https://www.shiyanlou.com/courses/595 一.前期工 ...

  7. python3 爬取百度图片

    深度学习中,从网上下载大量的图片数据,肯定是必须的.作为python爬虫小白,记录一下此过程. 一.分析网页结构 1.在百度图片中输入狗,得到如下所示的网址 http://image.baidu.co ...

  8. Python3爬取Bing每日图片,并设置为电脑桌面

    文章目录 1 - 简述 2 - 核心代码 2.1 - 爬取BingImage 2.2 - 设置为桌面 2.3 - 设置为每日自动执行 3 - 完整代码 4 - 运行结果 作为鄙视链底层的"脚 ...

  9. python3爬虫之二:爬取网页图片

    Python3抓取网页图片 爬取的路径:URL = https://pixabay.com/zh/editors_choice/?media_type=illustration&pagi=3 ...

最新文章

  1. IOError: [Errno 2] No such file or directory: ‘xxx\xe5\xbc\x80\xe5\x8f\x91\xe5\x88\x86\xe6\xa1.xlsx‘
  2. 常用命令linux下vi编辑器命令大全
  3. Zend Studio中文版
  4. 增强服务器安全性能,加强Linux服务器安全的20项建议
  5. 设计模式系列 12-- 职责链模式
  6. Django 数据库常见 Field Types
  7. Mad Libs 游戏
  8. 如何设置Java桌面程序界面外观(How to Set the Look and Feel) UIManager
  9. java期中 考试_java期中考试题
  10. Flink-sql之当前日期
  11. 期末考试之排名次java_2020超星尔雅《JavaWeb应用开发》期末测试答案
  12. 佳能Canon PIXMA MP568 一体机驱动
  13. 2022广东最新八大员之(安全员)模拟试题题库及答案
  14. 力矩 torque详解
  15. 服务器客服获取小程序头像,微信小程序自动获取微信用户头像
  16. 1.1 什么是PowerVM(IBM小型机)虚拟化技术
  17. VRRP(虚拟路由器冗余协议)
  18. 计算器php脚本之家,PHP实现简易图形计算器
  19. java程序设计实训项目_Java程序设计教程与项目实训
  20. 【详细解读】计算机操作系统知识点总览

热门文章

  1. 人工智能 | ShowMeAI资讯日报 #2022.06.16
  2. PDF图纸尺寸怎么测量
  3. 加速大数据分析和机器学习- Ziya Ma ( Intel Corp )
  4. JVM及性能优化(干货)
  5. PS修图嘴斜和PS黑白照片
  6. 学校教师计算机培训总结,2019学校教师培训工作总结范文
  7. 以user_1用户身份登录mysql_创建MySQL用户帐户和授予权限
  8. ubuntu qt creator编译出现:-1: error: Warning: File ' has modification time 3.8e+04 s in the future
  9. CHIL-SQL-WHERE 子句
  10. 简历修订中,下载打开需密码