简单使用Python爬虫爬取淘宝网页商品信息

2023-05-16

最近在学习爬虫,本人还是入门级的小白,自己跟着老师写了一些代码,算是自己的总结,还有一些心得,跟大家分享一下,如果不当,还请各位前辈斧正。
这是代码:

# 导入库
import requests
import re

# 定义函数getHTMLText(url),获取网页信息
def getHTMLText(url):
    try:
        headers = {
                    "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36",
                    "cookie": "miid=1428930817865580362; cna=EarZFfUm1S0CARsR+220O8hH; t=8bc94e7bc688eb7af5533f1976650fde; _m_h5_tk=65dbeb4e38f534aacf4025c8d4e81bce_1586794235712; _m_h5_tk_enc=e96d92ee16e958b4890caa9fc2fa6db4; thw=cn; cookie2=1554e5bbbfe6457cf1c1c9aa63c058df; v=0; _tb_token_=5a85e0188653; _samesite_flag_=true; sgcookie=EpId%2FVCz%2BPjBPFKeidqdS; unb=2683761081; uc3=lg2=WqG3DMC9VAQiUQ%3D%3D&id2=UU6p%2BQEJ8tSc4g%3D%3D&vt3=F8dBxdGLa3BXsASlX%2Bw%3D&nk2=BcLP06d1nZPt5PbdCo24Cnoi; csg=1e8e7f0a; lgc=freezing2856803123; cookie17=UU6p%2BQEJ8tSc4g%3D%3D; dnk=freezing2856803123; skt=6a084e57cf10b6e6; existShop=MTU4NzE5NDg1OA%3D%3D; uc4=id4=0%40U2xkY0WHChRFrR6VhQm75gIGMATD&nk4=0%40B044YAqLRKUazEZ7eWhSvUymCOjtR%2FkE1PO2nJ8%3D; tracknick=freezing2856803123; _cc_=U%2BGCWk%2F7og%3D%3D; _l_g_=Ug%3D%3D; sg=317; _nk_=freezing2856803123; cookie1=B0BXi%2BrAh%2BCsG%2B9LmOzVV9j8dAB5xdFbcF%2BmnvpYvzA%3D; tfstk=chgGBuae-cr6eLnsN1asMerwb79daT74EquI8V-uS4f_xE3z_sIoYL5pOSEkdp1..; mt=ci=97_1; enc=0gxF3t55dTUIEQOzUSrgF7p2gdf9xdcdC6xm317h5dXRn7D21KYrLJkRJFp6vcy6l7Z2CrAPewgEdMBB0j7yHg%3D%3D; alitrackid=www.taobao.com; lastalitrackid=www.taobao.com; hng=CN%7Czh-CN%7CCNY%7C156; uc1=cookie16=UtASsssmPlP%2Ff1IHDsDaPRu%2BPw%3D%3D&cookie21=U%2BGCWk%2F7p4mBoUyS4plD&cookie15=URm48syIIVrSKA%3D%3D&existShop=false&pas=0&cookie14=UoTUPc3lioQ%2F3A%3D%3D; JSESSIONID=B3B7C7381542916C591F2634FDE31A52; l=eBSbgB4VqimFn0mBBOfwdA7-hk7OSBdYYu8NeR-MiT5PON1p5CxAWZXZX0L9C3GVhsZXR3Szm2rQBeYBqS24n5U62j-la_kmn; isg=BGJi2OxgSCf6jlezYGKTe0FGvejEs2bNw3JHu6z7jlWAfwL5lEO23eh9r7uD9N5l"
                    }
        # 有些可以去掉headers=headers,但是大部分不能去掉,否则不能获取数据
        r=requests.get(url,timeout=30, headers=headers)
        # r = requests.get(url,timeout = 30)
        r.raise_for_status()
        # print(r.status_code)
        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)
        # print(plt)
        # tlt = re.findall(r'\"raw_title\"\:\".*?\"', html) 

        # 中括号指的是中括号里面包裹的随机抽取一个
        plt = re.findall(r'"view_price":"[\d.]*"', html)  

        # 以及re.findall(r"   正则  ",待查字符串)
        tlt = re.findall(r'"raw_title":".*?"', html)      
        # print(tlt)
        # ilt.append([1,1])
        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 printGoodsList(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])) 

# main()主函数 
def main():
    # 要进行搜索的商品名字,以下goods可以替换成其他商品进行搜索比如 '钢笔','杯子'等
    goods = '饭盒' 
    # 搜索的页数,这里设置为只爬取2页
    depth = 2
    start_url = 'https://s.taobao.com/search?q=' + goods
    infoList = []
    for i in range(depth):
        try:
            url = start_url + '&s=' + str(44*i) # 因为淘宝网页每页显示44个商品信息
            html = getHTMLText(url)
            parsePage(infoList, html)
            # print(infoList)
        except:
            continue
    printGoodsList(infoList)

main()

以下是运行结果:
在这里插入图片描述
心得:总的来说,学习爬虫还是得多动手,多写代码多总结才行吧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简单使用Python爬虫爬取淘宝网页商品信息 的相关文章

  • vscode1.65.2 + anaconda 在python拓展为2022.2.1924087327版本上的问题及解决

    在vscode 提示更新的时候我更新到了最新的版本 xff0c 但是遇到了下面的问题 xff1a 即在ananonda环境内安装了pytorch xff0c 但是在vscode里面一直提示no module named torch 一开始以
  • cpolar内网穿透:自动化登录服务器

    使用cpolar内网穿透工具自动化登录服务器 1 本文简介2 实现2 1 安装与卸载cpolar2 2 使用cpolar登录服务器 3 注意 1 本文简介 家里没有公网ipv4 xff0c 公网ipv6默认不能直接访问 xff0c 懒得找电
  • Ubuntu的sources.list文件

    更新后用apt get update更新源 1 Ubuntu 20 10 sources list deb http span class token operator span span class token comment old r
  • 关于模型训练中显存占用过大的或直接报显存爆炸的解决方法

    模型训练显存爆炸解决方法 在模型训练中 xff0c 应该理解梯度 反向传播 图层 显存这些概念 xff0c 在模型训练过程中 xff0c 一般会分为训练 43 验证 43 测试 xff0c 在这些过程中 xff0c 一般在训练过程中会比较占
  • 关于archlinux的安装

    安装系统时间 xff1a 2022年9月18日 镜像版本 xff1a archlinux 2022 09 03 x86 64 iso Linux内核版本 xff1a Linux version 5 15 68 1 lts linux lts
  • SpringBoot项目在使用Maven打包war中遇到的问题

    问题描述 在使用maven打包 xff08 package xff09 springboot项目为war项目后 xff0c 在本地机器上使用Tomcat跑这个项目 xff0c 访问资源时出现下面的错误 xff1a span class to
  • 做一个完整网站的流程(独立完成个人网站)

    注 xff1a 我写这个博客的目的只是为了分享我自己做网站的流程 xff0c 不是教大家一行一行敲代码的 xff0c 如果是想学语言的基本操作 xff0c 只能自己去找视频学习了 1 购买服务器 xff08 根据自己的需求以及爱好购买 xf
  • 维修1台联想SR550服务器亮黄灯 感叹号 开不了机

    客户信息 xff1a 一个省外客户朋友公司 设备型号 xff1a Lenovo ThinkSystem SR550 故障问题 xff1a 主机前面板亮黄灯 xff0c 能开机但无法正常完成BIOS UEFI自检程序 xff0c 故障界面 x
  • Android 8.0 利用Settings.Global属性跨应用定义标志位

    需求 需要在不同应用中定义一个标志位 xff0c 这里介绍下系统级别的应用和非系统级别应用如何添加 当然这不一定是最好的办法 xff0c 因为不能够添加intent putExtra 属性 系统级别应用 在需要定义的地方使用 SystemP
  • k-近邻算法实现手写数字识别系统

    k 近邻算法实现手写数字识别系统 一 实验介绍 1 1 实验内容 本实验将会从电影题材分类的例子入手 xff0c 详细讲述k 近邻算法的原理 在这之后 xff0c 我们将会使用该算法实现手写数字识别系统 1 2 课程来源 本课程源自 图灵教
  • 调整eclipse控制台console的方法

    调整eclipse控制台console的方法 会把在用eclipse的过程中产生的问题和找到的解决方案记录一下 xff0c 以便之后再用到 今天在运行代码的时候 xff0c 突然控制台和代码并列了 然后百度了一下找到了方法 windows
  • Linux: 运行sh命令时command not found

    问题 xff1a 解决 xff1a 1 查看PATH变量 echo PATH 2 把查询出来的PATH放到sh文件中并导入
  • 修改git tag的描述信息

    今天手贱 xff0c 非要用TortoiseGit打tag xff0c 没用命令行 xff0c 结果这不是还没有学习么 xff0c 然后就出现问题了 不过好在是我自己的Toy代码 xff0c 那就看看如何解决吧 问题描述 使用Tortois
  • Linux 设置用户登录超时

    Linux 系统中使用SSH进行远程登录 xff0c 如果长时间不操作将自动注销用户的登录 原本以为在 etc ssh sshd config文件中配置 查了资料和测试只需要在shell环境变量中设置即可 span class hljs c
  • rime配置

    文件路径 AppData Rime 配置修改 default custom yaml span class hljs label customization span span class hljs label distribution c
  • matlab中(),[],与{}的区别认识

    转载自 http blog csdn net CV YOU article details 52873666 在matlab中 xff0c 常常会遇到 xff0c 和 这个3种符号怎么区分 xff0c 怎么用 xff0c 这里我来总结一下
  • WinServer2012 R2忘记密码的解决方案+远程连接另一种莫名其妙故障

    WinServer2012 R2忘记密码的解决方案 43 远程连接另一种莫名其妙故障 参考文章 xff1a xff08 1 xff09 WinServer2012 R2忘记密码的解决方案 43 远程连接另一种莫名其妙故障 xff08 2 x
  • 迅雷 应版权方要求,文件无法下载 解决方法

    迅雷 应版权方要求 xff0c 文件无法下载 解决方法 参考文章 xff1a xff08 1 xff09 迅雷 应版权方要求 xff0c 文件无法下载 解决方法 xff08 2 xff09 https www cnblogs com sui
  • redis集群搭建报错-(error) CLUSTERDOWN The cluster is down

    README 最近搭建一个redis集群 xff0c 参考博文 xff08 https www cnblogs com mafly p redis cluster html xff09 对集群配置后 xff0c master xff0c s
  • rabbitmq-通配符模式

    README 本文介绍 通配符模式 xff0c 及代码示例 1 intro to rabbitmq通配符模式 0 xff09 通配符模式 交换机类型为 Topic xff1b 1 xff09 与路由模式相比 xff0c 相同点是 两者都可以

随机推荐