Python爬取淘宝模特图片网络爬虫示例

为了爬取模特的图片,我们首先要找到各个模特自己的页面。通过查看网页源码,我们可以发现,模特各自的页面的特点如下:

我们可以通过查找class属性为lady-name的标签,然后取其href属性来获取各个模特各自的页面地址。

1 html = urlopen(url)
2 bs = BeautifulSoup(html.read().decode('gbk'),"html.parser")
3 girls = bs.findAll("a",{"class":"lady-name"})
4 for item in girls:
5     linkurl = item.get('href')

继续分析模特各自的页面的特点,模特页面打开后的页面布局如下:


 

在这个页面中我们要提取的是模特的个性域名,这个域名打开后,里面就有模特的图片了。那么我们的关键问题就是如何提取这个域名。按我们之前的学习,我们会去查找这个标签,但是我们打开网页源码会发现网页源码里面并没有包含这个信息。这是因为这一部分的信息是用JS动态生成的。那么这种情况下我们怎么办呢?

      答案是使用selenium和PhantomJS,相关的概念可以自行百度。简而言之,PhantomJS是一个无界面的浏览器,而selenium是一个测试浏览器的工具,结合这2者,我们就可以解析动态的页面了。

 


      获取模特的个性域名的代码如下:

复制代码
 1 def getUrls(url):
 2     driver= webdriver.PhantomJS()
 3     html = urlopen(url)
 4     bs = BeautifulSoup(html.read().decode('gbk'),"html.parser")
 5     girls = bs.findAll("a",{"class":"lady-name"})
 6     namewithurl = {}
 7     for item in girls:
 8         linkurl = item.get('href')
 9         driver.get("https:"+linkurl)
10         bs1 = BeautifulSoup(driver.page_source,"html.parser")
11         links = bs1.find("div",{"class":"mm-p-info mm-p-domain-info"})
12         if links is not None:
13             links = links.li.span.get_text()
14             namewithurl[item.get_text()] = links
15             print(links)
16     return namewithurl
复制代码
      在这里,我们使用PhantomJs去加载动态的页面,然后用BeautifulSoup去规则化加载后的页面,接下来的工作就与普通的网页相同了。

      接下来分析模特的个人主页的特点,直观上是这样的页面:

 

分析源码后我们会发现,模特的图片地址可以这样获取:

1 html = urlopen(personurl)
2 bs = BeautifulSoup(html.read().decode('gbk'),"html.parser")
3 contents = bs.find("div",{"class":"mm-aixiu-content"})
4 imgs = contents.findAll("img",{"src":re.compile(r'//img\.alicdn\.com/.*\.jpg')})

如此我们就能获取模特的个人域名地址中的图片了,接下来的问题就是如何保存图片了。

我们可以用urllib中的urlretrieve函数来完成保存的工作。

用法为urlretrieve(imgurl, savepath)

再加入多线程等代码,完整的爬虫代码为:

 代码如下 复制代码

#coding = utf-8
from urllib.request import urlopen
from urllib.request import urlretrieve
from urllib.error import HTTPError
from selenium import webdriver
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup
from multiprocessing.dummy import Pool as ThreadPool
import sys,os
import re

savepath=r".\save"

def mkdir(path):
    if os.path.exists(path):
        return
    os.mkdir(path)

def getUrls(url):
    driver= webdriver.PhantomJS()
    html = urlopen(url)
    bs = BeautifulSoup(html.read().decode('gbk'),"html.parser")
    girls = bs.findAll("a",{"class":"lady-name"})
    namewithurl = {}
    for item in girls:
        linkurl = item.get('href')
        driver.get("https:"+linkurl)
        bs1 = BeautifulSoup(driver.page_source,"html.parser")
        links = bs1.find("div",{"class":"mm-p-info mm-p-domain-info"})
        if links is not None:
            links = links.li.span.get_text()
            namewithurl[item.get_text()] = links
            print(links)
    return namewithurl

def getImgs(parms):
    personname = parms[0]
    personurl = "https:"+parms[1]
    html = urlopen(personurl)
    bs = BeautifulSoup(html.read().decode('gbk'),"html.parser")
    contents = bs.find("div",{"class":"mm-aixiu-content"})
    imgs = contents.findAll("img",{"src":re.compile(r'//img\.alicdn\.com/.*\.jpg')})
    savefilename = os.path.join(savepath,personname)
    mkdir(savefilename)
    print("img num :",len(imgs))
    cnt = 0
    for img in imgs:
        try:
            urlretrieve(url = "https:"+img.get("src"),filename =os.path.join(savefilename,str(cnt)+".jpg"))
            cnt+=1
        except HTTPError as e:
            continue

if __name__ == "__main__":
    mkdir(savepath)
    pagenum = 10
    for i in range(1,pagenum):
        urls = getUrls("https://mm.taobao.com/json/request_top_list.htm"+"?page="+str(i))
        pool = ThreadPool(4)
        pool.map(getImgs,urls.items())
        pool.close()
        pool.join()
        # for (k,v) in urls.items():
        #     getImgs((k,v))

然后打开里面会有你想不到的结果哦,所以的图片全部自动下载成功哦。

时间: 2024-08-03 02:03:14

Python爬取淘宝模特图片网络爬虫示例的相关文章

python爬取淘宝商品信息并加入购物车

先说一下最终要达到的效果:谷歌浏览器登陆淘宝后,运行python项目,将任意任意淘宝商品的链接传入,并手动选择商品属性,输出其价格与剩余库存,然后选择购买数,自动加入购物车. 在开始爬取淘宝链接之前,咱么要先做一些准备工作,我项目中使用的是 python2.7 ,开发与运行环境都是win10,浏览器是64位chrome 59.0.3.由于淘宝的模拟登陆涉及到一些复杂的UA码算法以及滑块登陆验证,能力有限,为了图省事就使用浏览器手动登录淘宝然后python获取生成的cookie的方式来爬取登录后的

用HtmlUnit爬取淘宝数据

问题描述 http://jiuxu.taobao.com/比如我想爬取上面页面的所有宝贝链接如<ahref="http://item.taobao.com/item.htm?spm=a1z10.1.w5003-8452167994.1.fVp17O&id=40416742109&scene=taobao_shop"target="_blank"data-spm-wangpu-module-id="5003-8452167994&quo

Python爬取百度贴吧图片

一.获取URL Urllib 模块提供了读取web页面数据的接口,我们可以像读取本地文件一样读取www和ftp上的数据.首先,我们定义了一个getHtml()函数: urllib.urlopen()方法用于打开一个URL地址. read()方法用于读取URL上的数据,向getHtml()函数传递一个网址,并把整个页面下载下来.执行程序就会把整个网页打印输出. 二.查看图片地址   我们又创建了getImg()函数,用于在获取的整个页面中筛选需要的图片连接.re模块主要包含了正则表达式: re.c

通过抓取淘宝评论为例讲解Python爬取ajax动态生成的数据(经典)_AJAX相关

在学习python的时候,一定会遇到网站内容是通过 ajax动态请求.异步刷新生成的json数据 的情况,并且通过python使用之前爬取静态网页内容的方式是不可以实现的,所以这篇文章将要讲述如果在python中爬取ajax动态生成的数据. 至于读取静态网页内容的方式,有兴趣的可以查看本文内容. 这里我们以爬取淘宝评论为例子讲解一下如何去做到的. 这里主要分为了四步: 一 获取淘宝评论时,ajax请求链接(url) 二 获取该ajax请求返回的json数据 三 使用python解析json数据

PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例_php实例

说起来做这个功能还真是一时好奇.前段时间在做一个淘客网站的时候,想到是否能抓取到淘宝商品的买家秀呢?经过一番折腾发现,淘宝商品用户评价信息是通过Ajax来调取的,通过嗅探网址发现,评论数据的请求接口是: https://rate.tmall.com/list_detail_rate.htm?itemId=524394294771&spuId=341564036&sellerId=100414600&order=3&currentPage=1&append=0&

网页-如何网络爬虫抓取淘宝交易数据

问题描述 如何网络爬虫抓取淘宝交易数据 小弟学软件的,现在想开淘宝店,想想怎么能快速获得用户数据推广产品,问问说网络爬虫可行,可是对这方面不了解,有哪位大神可以教一下,获取自己和其他用户网页上的商品信息之类的,作为分析. 解决方案 搜索引擎如百度都不让抓淘宝里的交易数据,淘宝的安全工程师都不是吃素的,建议你换个课题吧 解决方案二: 可以先看看对应数据的http,浏览器查看一下是否有对应的api,然后再考虑怎么发送请求 解决方案三: 关于电商网站的爬虫,大家可以学习一下这个系列的教程:http:/

python爬取NUS-WIDE数据库图片_python

实验室需要NUS-WIDE数据库中的原图,数据集的地址为http://lms.comp.nus.edu.sg/research/NUS-WIDE.htm   由于这个数据只给了每个图片的URL,所以需要一个小爬虫程序来爬取这些图片.在图片的下载过程中建议使用VPN.由于一些URL已经失效,所以会下载一些无效的图片. # PYTHON 2.7 Ubuntu 14.04 nuswide = "$NUS-WIDE-urls_ROOT" #the location of your nus-wi

PS怎么制作淘宝店招图片效果图

  PS怎么制作淘宝店招图片效果图          很多人不知道怎么自定义自家的店招,因为有个系统自带的导航,而系统自带的不能删.很多人会说,喵了个咪!其实你只要把店招上面的那个高度从120px调整到150px,那个系统自带的导航就会自动隐藏的了 =3= (那个地方就是你到店铺装修-首页-对着店招点双击,然后你自己找到 [120px高度] 这个设置.然后手动改成150px点击保存,然后系统自带的就会自己跑到下面,发布后是隐藏的). 首先,我们看看店招完成效果: 宽是1920px 高是150px

Photoshop给淘宝模特照片添加逼真的投影

  本教程主要使用Photoshop制作淘宝模特逼真的投影效果,打造逼真的投影曾经一度时间我绞尽脑汁在探究如果制作逼真的模特投影,基于公司不怎么夯实的经济基础.选用的一般的拍摄公司,拍出来的照片没有立体感.看小图还可以,只是没有大气 自然的感觉所以我用万能的ps打造完美的逼真投影.过程也非常久,也要不断去摸索,光线的掌握不是很准确,需要长时间的去观察和练习. 先看看效果图 原图 具体的制作步骤如下:1.打开要做投影的图,抠图[抠图有很多种方法,也是最基本的,这里就不详细说了]. 2.扣好以后,将