前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >淘宝商品比价爬虫

淘宝商品比价爬虫

作者头像
不温卜火
发布2020-10-28 14:39:52
1.1K0
发布2020-10-28 14:39:52
举报
文章被收录于专栏:不温卜火

一、前提准备

1、功能描述

获取淘宝搜索页面的信息,提取其中的商品名称和价格。

2、分析页面

①先确定搜索url

1
1

根据上图我们可以看到url为:https://s.taobao.com/search?q后面的书包为自定义搜索内容。 由此我们可以知道起始url为:start_url = 'https://s.taobao.com/search?q=' + 自定义搜索内容 ②确定每一页物品的数量。

2
2
3
3

根据上面点击不同页面可以发现,每一页的间距为44 ③每个商品的价格以及内容简介:

4
4
5
5

3、代码实现

步骤: 提交商品搜索请求,循环获取页面 对于每个页面,提取商品名称和价格信息对于每个页面,提取商品名称和价格信息 将信息输出到屏幕上将信息输出到屏幕上

大体框架:

代码语言:javascript
复制
import requests
import re
def getHTMLText(url):  # 获得页面函数
	pass
	
def parsePage(ilt, html):  # 解析获得的页面
    pass

def printGoodlist(ilt):  # 输出结果信息到屏幕
    pass
    
def main():  # 主函数
    goods = '书包'
    depth = 3  # 下一页深度
    start_url = 'https://s.taobao.com/search?q=' + goods
    indolist = []  # 输出结果
    for i in range(depth):
        try:
            url = start_url + '&s=' + str(48 * i)
            html = getHTMLText(url)
            parsePage(indolist, html)
        except:
            continue
    printGoodlist(indolist)
    
main()

4、完整代码:

代码语言:javascript
复制
# =============================================
# --*-- coding: utf-8 --*--
# @Time    : 2020-03-20
# @Author  : 李华鑫
# @CSDN    : https://blog.csdn.net/qq_16146103
# @FileName: taobao.py
# @Software: PyCharm
# =============================================

import requests
import re
def getHTMLText(url):  # 获得页面函数
    try:
        header = {
            'user-agent': 'Mozilla/5.0 ',
            'cookie': 'thw=cn; cna=npj6FSROsjACAdodv5gJhCng; hng=CN%7Czh-CN%7CCNY%7C156; tracknick=a459804692; _cc_=Vq8l%2BKCLiw%3D%3D; tg=0; enc=QBWbMOc0vQMNrTeNZMKkNSam6PhBuBNZFXZb7jRKj1R6%2FnZ%2FAztJW%2F4Ql%2BaqZxBArE4hIF2kV2dUg%2BBZSV88Eg%3D%3D; x=e%3D1%26p%3D*%26s%3D0%26c%3D0%26f%3D0%26g%3D0%26t%3D0%26__ll%3D-1%26_ato%3D0; miid=778994371391611536; t=c8d997f8c3862a9545d7aa8e0f55a811; _m_h5_tk=35adf942f203d5b2def2e96c38527acf_1579166355669; _m_h5_tk_enc=0f3e60d1c12cd628e261b932e21ab4a2; cookie2=15c929f24b3d18aec75687bbefabacb3; v=0; _tb_token_=e9b30e375eee7; alitrackid=www.taobao.com; lastalitrackid=www.taobao.com; __guid=154677242.3514116682747917000.1579155943921.0774; _uab_collina=157915745635971448621381; x5sec=7b227365617263686170703b32223a223365323561373037306538313737393931373032646330666464613337346335434b6154675045464549756a734e6e372f4a724f68674561444449314f5467344e5459344e6a55374d513d3d227d; JSESSIONID=391518D427C8B71F1754C4144A533BCA; monitor_count=8; isg=BE9PlXPQTWYkTEpDzc8TlxxO3uNZdKOWgEm-D2Fcj77tMG0yYUXr5h6mMmCOSHsO; l=cBa32tzuqwYH7YbhBOCwZuI8jO79hIRVguPRwnNXi_5dY18KvH_Oomns5eJ6cjWdtkLW4IFj7Ty9-etuiRHx3mx-g3fP.'
        }
        r = requests.get(url, headers=header, timeout=30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        # print(r.text)
        return r.text
    except:
        return ""

def parsePage(ilt, html):  # 解析获得的页面
    try:
        plt = re.findall(r'\"view_price\"\:\"[\d\.]*"', html)
        tlt = re.findall(r'\"raw_title\"\:\".*?"', html)
        for i in range(len(plt)):
            price = eval(plt[i].split(':')[1])
            title = eval(tlt[i].split(':')[1])
            ilt.append([price, title])
    except:
        print("")

def printGoodlist(ilt):  # 输出结果信息到屏幕
    tplt = "{:4}\t{:8}\t{:16}"
    print(tplt.format("序号", "价格", "商品名称"))
    count = 0
    for g in ilt:
        count = count + 1
        print(tplt.format(count, g[0], g[1]))

def main():  # 主函数
    goods = '书包'
    depth = 3  # 下一页深度
    start_url = 'https://s.taobao.com/search?q=' + goods
    indolist = []  # 输出结果
    for i in range(depth):
        try:
            url = start_url + '&s=' + str(48 * i)
            html = getHTMLText(url)
            parsePage(indolist, html)
        except:
            continue
    printGoodlist(indolist)

main()

5、运行结果

6
6

6、总结

本爬虫程序并没有使用BS4,使用的是正则表达式,同时本程序也没有使用存储程序,这些都可以完善的,在此我就不完善了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/03/20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前提准备
    • 1、功能描述
      • 2、分析页面
        • 3、代码实现
        • 4、完整代码:
        • 5、运行结果
        • 6、总结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档