爬虫入门经典(七) | 一文带你爬取淘宝电场

不温卜火 等级 402 0 0

  大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行更新,博客主页:https://buwenbuhuo.blog.csdn.net/爬虫入门经典(七) | 一文带你爬取淘宝电场

PS:由于现在越来越多的人未经本人同意直接爬取博主本人文章,博主在此特别声明:未经本人允许,禁止转载!!!

目录


爬虫入门经典(七) | 一文带你爬取淘宝电场


推荐

爬虫入门经典(七) | 一文带你爬取淘宝电场
  ♥各位如果想要交流的话,可以加下QQ交流群:974178910,里面有各种你想要的学习资料。♥

  ♥欢迎大家关注公众号【不温卜火】,关注公众号即可以提前阅读又可以获取各种干货哦,同时公众号每满1024及1024倍数则会抽奖赠送机械键盘一份+IT书籍1份哟~♥
爬虫入门经典(七) | 一文带你爬取淘宝电场

一、网页分析

在前几篇文章中,虽然已经有过用正则表达式解析数据的案例,但是个人感觉干货不够!所以,本次博主诚意满满的再次带来一篇博文~ 爬虫入门经典(七) | 一文带你爬取淘宝电场
下面博主先给出要爬取网页的网址:https://www.taobao.com/markets/3c/tbdc?spm=a217h.9580640.831011.1.1aa525aaKXwn5M

打开网页之后,我们可以看到网页是这样的:
爬虫入门经典(七) | 一文带你爬取淘宝电场
看到网页之后,下面我们就需要开始分析网页结构,首先,先通过打开开发者选项,查看网页结构。我们通过查看发现,此网页是静态网页,看到此结构的第一时间,博主先使用了xpath进行解析。
爬虫入门经典(七) | 一文带你爬取淘宝电场
通过解析,博主发现是可行的。但是!既然说了,使用正则进行解析,怎么能为了偷懒就换用xpath呢?所以博主毅然的放弃了xpath。
爬虫入门经典(七) | 一文带你爬取淘宝电场
但是如果使用正则的话,我们会发现, 我们需要找其他的URL。但是我们通过查看传统的NetWork无法找到我们需要的URL。

在这种时候我们可以通过开发者工具中的Sreach查找关键字:
爬虫入门经典(七) | 一文带你爬取淘宝电场
我们看到网页中有关键字,如荣耀 畅玩7。我们以此为突破口,进行问题的切入
爬虫入门经典(七) | 一文带你爬取淘宝电场
通过上图,我们可以知道此部分就是咱们要找的URL,这个时候我们只需点击Headers 就可以看到我们需要的URL
爬虫入门经典(七) | 一文带你爬取淘宝电场
我们看到此网页共有七个模块,所以我们需要找到7个URL, 由于找其他URL的过程和举例是一样的,博主在此只给出URL。
爬虫入门经典(七) | 一文带你爬取淘宝电场

url1 = "https://drc.alicdn.com/7/1870316_2____?callback=jsonp1870316_2____"
url2 = "https://drc.alicdn.com/7/1870321_2____?callback=jsonp1870321_2____"
url3 = "https://drc.alicdn.com/7/1870333_2____?callback=jsonp1870333_2____"
url4 = "https://drc.alicdn.com/7/1870340_2____?callback=jsonp1870340_2____"
url5 = "https://drc.alicdn.com/7/1870341_2____?callback=jsonp1870341_2____"
url6 = "https://drc.alicdn.com/7/1870342_2____?callback=jsonp1870342_2____"
url7 = "https://drc.alicdn.com/7/1870343_2____?callback=jsonp1870343_2____" 

二、内容解析

需要的网址已经搞到了,下面当然是要解析网页了:
爬虫入门经典(七) | 一文带你爬取淘宝电场
根据上图,我们可以看到价格、图片、标题、链接。

通过观察,我们发现是有规律的,我们只需(.*?)即可获取我们所需要的内容。 代码如下

# 获取数据
title_list = re.findall(r'"item_title":"(.*?)"', content)
price_list = re.findall(r'"item_current_price":"(.*?)"', content)
pic_list = re.findall(r'"item_pic":"(.*?)"', content)
url_list = re.findall(r'"item_url":"(.*?)"', content) 

获取之后,别忘了使用zip()压缩一下数据

# 压缩数据
data_zip = zip(title_list, price_list, pic_list, url_list)
# 循环
for data in data_zip:
    items.append(data) 

最后,我们可以看到输出的格式如下图:
爬虫入门经典(七) | 一文带你爬取淘宝电场
你以为这样就完了嘛!
爬虫入门经典(七) | 一文带你爬取淘宝电场
我们现在只是获取了基本信息。在网页解析中,我们可以看到item_pic内有图片链接,我们可以打开看是不是我们想要保存的图片
爬虫入门经典(七) | 一文带你爬取淘宝电场
复制到空白处,我们看下这个链接

http://gw.alicdn.com/bao/uploaded/i4/840091576/O1CN018aiCuF1NVqjqpMNB4_!!840091576.jpg 

通过观察,我们可以看到需要添加http:

完整代码如下:

# 拼接成完整URL
content = parse_url("http:" + url)
print(content) 

爬虫入门经典(七) | 一文带你爬取淘宝电场

三、完整代码

# encoding: utf-8
'''
  @author 李华鑫
  @create 2020-10-07 14:46
  Mycsdn:https://buwenbuhuo.blog.csdn.net/
  @contact: 459804692@qq.com
  @software: Pycharm
  @file: 淘宝商品信息.py
  @Version:1.0

'''
import requests
import time
import random
import re
import csv
import os

"""
https://s.taobao.com/search?q=%E5%8D%8E%E4%B8%BA&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306&bcoffset=6&ntoffset=6&p4ppushleft=1%2C48&s=0
"""

url1 = "https://drc.alicdn.com/7/1870316_2____?callback=jsonp1870316_2____"
url2 = "https://drc.alicdn.com/7/1870321_2____?callback=jsonp1870321_2____"
url3 = "https://drc.alicdn.com/7/1870333_2____?callback=jsonp1870333_2____"
url4 = "https://drc.alicdn.com/7/1870340_2____?callback=jsonp1870340_2____"
url5 = "https://drc.alicdn.com/7/1870341_2____?callback=jsonp1870341_2____"
url6 = "https://drc.alicdn.com/7/1870342_2____?callback=jsonp1870342_2____"
url7 = "https://drc.alicdn.com/7/1870343_2____?callback=jsonp1870343_2____"

urls = [url1, url2,url3,url4,url5,url6,url7]

headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
}

items = []

def parse_url(url):
    """解析url,得到响应内容"""
    time.sleep(random.random() * 3)
    response = requests.get(url=url, headers=headers)
    return response.content

def parse_content(content):
    """解析响应内容,返回数据"""

    # 获取数据
    title_list = re.findall(r'"item_title":"(.*?)"', content)
    price_list = re.findall(r'"item_current_price":"(.*?)"', content)
    pic_list = re.findall(r'"item_pic":"(.*?)"', content)
    url_list = re.findall(r'"item_url":"(.*?)"', content)
    # 压缩数据
    data_zip = zip(title_list, price_list, pic_list, url_list)
    # 循环
    for data in data_zip:
        items.append(data)

def save():
    """保存数据"""
    with open("./files/淘宝/淘宝.csv", "a", encoding="utf-8") as file:
        writer = csv.writer(file)
        for item in items:
            writer.writerow(item)
            save_img(item[2], item[0])

def save_img(url, title):
    """保存图片"""

    # 获取字节
    content = parse_url("http:" + url)

    # 处理name
    if title.rfind("/") != -1:
        title = title.split("/")[-1]
    name = title + os.path.splitext(url)[-1]
    # 文件写
    with open("./files/淘宝/img/{}".format(name), "wb") as file:
        file.write(content)

def start():
    """开始爬虫"""
    if not os.path.exists("./files/淘宝/img"):
        os.makedirs("./files/淘宝/img")

    for url in urls:
        print(url)
        content = parse_url(url).decode("utf-8")
        parse_content(content)
    save()

if __name__ == '__main__':
    start() 

四、运行结果

爬虫入门经典(七) | 一文带你爬取淘宝电场
爬虫入门经典(七) | 一文带你爬取淘宝电场

爬虫入门经典(七) | 一文带你爬取淘宝电场

美好的日子总是短暂的,虽然还想继续与大家畅谈,但是本篇博文到此已经结束了,如果还嫌不够过瘾,不用担心,我们下篇见!


爬虫入门经典(七) | 一文带你爬取淘宝电场

  好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
  如果我的博客对你有帮助、如果你喜欢我的博客内容,请“点赞” “评论”“收藏”一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
  码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘了关注我哦!

爬虫入门经典(七) | 一文带你爬取淘宝电场
爬虫入门经典(七) | 一文带你爬取淘宝电场

本文转自 https://buwenbuhuo.blog.csdn.net/article/details/109254391,如有侵权,请联系删除。

收藏
评论区

相关推荐

一个爬虫的故事:这是人干的事儿?
本文转载自 轩辕之风的文章,链接 https://mp.weixin.qq.com/s/YygbUWpa2mbPZPuPNhdt2w 爬虫原理 我是一个爬虫,每天穿行于互联网之上,爬取我需要的一切。 image.png(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/656d
爬虫入门经典(一) | 一文教你用Spider制作简易的翻译工具
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行
爬虫入门经典(七) | 一文带你爬取淘宝电场
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行
爬虫入门经典(八) | 一文带你快速爬取股吧
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行
爬虫入门经典(九) | 简单一文教你如何爬取扇贝单词
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行
爬虫入门经典(十一) | 一文带你爬取传统古诗词(超级简单!)
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行
爬虫入门经典(二十二) | 破解base64加密之爬取安居客
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行
python爬虫之数据提取Xpath(爬取起点中文网案例)
(https://blog.csdn.net/sjjsaaaa/article/details/111293732)Xpath 详细的Xpath介绍手册—— https://www.w3school.com.cn/xpa
原来Python绘图也可以这么漂亮,这次真的是学习到了!
(https://imghelloworld.osscnbeijing.aliyuncs.com/8830803f033eeed85783e9058cf08968.png) 作者:朱小五 来源:快学Python 👆人生苦短,快学Python! 最近看了一篇文章《一个牛逼的Python 可视化库:PyG2Plot》,可惜只是简单介
被“词云”包围的冰冰会更好看吗?安排
(https://imghelloworld.osscnbeijing.aliyuncs.com/b299933deefc692934e8cc6141ab3894.png) 大家好,我是小五🐶 昨天「凹凸数据」发了一篇张同学投稿的文章《用Python爬取王冰冰vlog弹幕并制作词云(https://mp.weixin.qq.com/
Python网络爬虫与信息提取
title: Python网络爬虫与信息提取date: 20201210 01:00:23tags: Pythoncategories: 学习笔记 写在前面 不知道写啥其实说实话[TOC] 网络爬虫之规则 安装requests库cmd 命令行打开输入pip3 install requests,等待即可简单测试,爬一下bkjwpythonimport requ
《Python3网络爬虫开发实战》
提取码:1028内容简介 · · · · · ·本书介绍了如何利用Python 3开发网络爬虫,书中首先介绍了环境配置和基础知识,然后讨论了urllib、requests、正则表达式、Beautiful Soup、XPath、pyquery、数据存储、Ajax数据爬取等内容,接着通过多个案例介绍了不同场景下如何实现数据爬取,后介绍了pyspider框架、S
创建免费ip代理池
     反爬技术越来越成熟,为了爬取目标数据,必须对爬虫的请求进行伪装,骗过目标系统,目标系统通过判断请求的访问频次或请求参数将疑似爬虫的ip进行封禁,要求进行安全验证,通过python的第三方库faker可以随机生成header伪装请求头,并且减缓爬虫的爬取速度,能很好的避过多数目标系统的反扒机制,但对一些安全等级
3000字 “婴儿级” 爬虫图文教学 | 手把手教你用Python爬取 “实习网”!
1\. 为"你"而写 这篇文章,是专门为那些 "刚学习" Python爬虫的朋友,而专门准备的文章。希望你看过这篇文章后,能够清晰的知道整个 "爬虫流程"。从而能够 "独立自主" 的去完成,某个简单网站的数据爬取。好了,咱们就开始整个 “爬虫教学” 之旅吧!2\. 页面分析 ① 你要爬取的网站是什么?首先,我们应该清楚你要爬去的网站是什么?由于这里我们想要
实战|手把手教你用Python爬取存储数据,还能自动在Excel中可视化!
大家好,在之前我们讲过如何用Python构建一个带有GUI的爬虫小程序,很多本文将迎合热点,延续上次的NBA爬虫GUI,探讨如何爬取虎扑NBA官网数据。 并且将数据写入Excel中同时自动生成折线图,主要有以下几个步骤。本文将分为以下两个部分进行讲解 在虎扑NBA官网球员页面中进行爬虫,获取球员数据。 清洗整理爬取的球员数据,对其进行可视化。