python3爬取淘女郎图片
selenium+chrome 爬取淘女郎页面
分析https://www.taobao.com/markets/mm/mmku 这个页面,右键查看网页源代码搜索 img 竟然找不到图片标签,可以猜测是ajax异步加载,所以爬取页面难度升级了,目前有两种方法
- 分析网页请求,写接口来处理
- 利用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爬取淘女郎图片相关推荐
- python3爬取百度图片
python3爬取百度图片 最终目的:能通过输入关键字进行搜索,爬取相应的图片存储到本地或者数据库 首先打开百度图片的网站,搜索任意一个关键字,比如说:水果,得到如下的界面 分析: 1.百度图片搜索结 ...
- 使用python3爬取美女图片
给大佬们观赏观赏,爬取美女图片,各位大佬们小心身子哈. #目标:爬取网页所有图片并保存到本地 #目标url = http://www.umei.cc/tags/meishaonv_1.htm impo ...
- [python3.6]爬虫实战之爬取淘女郎图片
原博主地址:http://cuiqingcai.com/1001.html 原博是python2.7写的,并且随着淘宝代码的改版,原博爬虫已经不可用. 参考 http://minstrel.top/T ...
- python3爬取1024图片
这两年python特别火,火到博客园现在也是隔三差五的出现一些python的文章.各种开源软件.各种爬虫算法纷纷开路,作为互联网行业的IT狗自然看的我也是心痒痒,于是趁着这个雾霾横行的周末瞅了两眼,作 ...
- [Python3] 爬取百度图片到本地
前言 因为需要一些图片素材,又不想一个个手动下载,遂通过爬虫来解放双手.在百度图片中搜索"汉服美女",然后以浏览器地址栏上的地址作为初始 URL.通过对 URL 分析知道 URL ...
- python3 爬取淘女郎照片
博主初学python,想写个爬虫练练手.在实验楼找了个项目爬淘女郎照片,不过原文代码有些问题我做了些修改 原文链接https://www.shiyanlou.com/courses/595 一.前期工 ...
- python3 爬取百度图片
深度学习中,从网上下载大量的图片数据,肯定是必须的.作为python爬虫小白,记录一下此过程. 一.分析网页结构 1.在百度图片中输入狗,得到如下所示的网址 http://image.baidu.co ...
- Python3爬取Bing每日图片,并设置为电脑桌面
文章目录 1 - 简述 2 - 核心代码 2.1 - 爬取BingImage 2.2 - 设置为桌面 2.3 - 设置为每日自动执行 3 - 完整代码 4 - 运行结果 作为鄙视链底层的"脚 ...
- python3爬虫之二:爬取网页图片
Python3抓取网页图片 爬取的路径:URL = https://pixabay.com/zh/editors_choice/?media_type=illustration&pagi=3 ...
最新文章
- IOError: [Errno 2] No such file or directory: ‘xxx\xe5\xbc\x80\xe5\x8f\x91\xe5\x88\x86\xe6\xa1.xlsx‘
- 常用命令linux下vi编辑器命令大全
- Zend Studio中文版
- 增强服务器安全性能,加强Linux服务器安全的20项建议
- 设计模式系列 12-- 职责链模式
- Django 数据库常见 Field Types
- Mad Libs 游戏
- 如何设置Java桌面程序界面外观(How to Set the Look and Feel) UIManager
- java期中 考试_java期中考试题
- Flink-sql之当前日期
- 期末考试之排名次java_2020超星尔雅《JavaWeb应用开发》期末测试答案
- 佳能Canon PIXMA MP568 一体机驱动
- 2022广东最新八大员之(安全员)模拟试题题库及答案
- 力矩 torque详解
- 服务器客服获取小程序头像,微信小程序自动获取微信用户头像
- 1.1 什么是PowerVM(IBM小型机)虚拟化技术
- VRRP(虚拟路由器冗余协议)
- 计算器php脚本之家,PHP实现简易图形计算器
- java程序设计实训项目_Java程序设计教程与项目实训
- 【详细解读】计算机操作系统知识点总览
热门文章
- 人工智能 | ShowMeAI资讯日报 #2022.06.16
- PDF图纸尺寸怎么测量
- 加速大数据分析和机器学习- Ziya Ma ( Intel Corp )
- JVM及性能优化(干货)
- PS修图嘴斜和PS黑白照片
- 学校教师计算机培训总结,2019学校教师培训工作总结范文
- 以user_1用户身份登录mysql_创建MySQL用户帐户和授予权限
- ubuntu qt creator编译出现:-1: error: Warning: File ' has modification time 3.8e+04 s in the future
- CHIL-SQL-WHERE 子句
- 简历修订中,下载打开需密码