网络爬虫信息之实战淘宝书包信息爬取14「建议收藏」

网络爬虫信息之实战淘宝书包信息爬取14「建议收藏」#导入requests和re正则库importrequestsimportre#定义第一个函数实现获取网页数据defgetHTMLText(url,loginheaders):try:r=requests.get(url,headers=loginheaders,timeout=30)r.raise_for_status()…

大家好,又见面了,我是你们的朋友全栈君。

# 导入requests和re正则库
import requests
import re

# 定义第一个函数实现获取网页数据
def getHTMLText(url,loginheaders):
    try:
        r = requests.get(url,headers=loginheaders, timeout=30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        print(r.text)
        return r.text
    except:
        return ""

#定义一个函数实现把书包信息存储区来,包括编号,价格,名称
def parsePage(ilt, html):
    try:
        # 要明白 .* 代表的是任意个不同字符,而不是说必须是任意个相同的字符,其他的也是类似
        # re.findall()返回的是列表类型
        # 利用正则表达式查找价格("view_price":"任意个数的任意数字加点"),所以正则表达式还可在小数点后加两个0写成r'\"view_price\"\:\"[\d\.]*00\"'
        plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html)
        # 利用正则表达式查找题目("raw_title":"任意个数的任意字符")
        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列表当中,二维元组列表
            ilt.append([price, title])
    except:
        print("")

# 打印题目和爬取的信息
def printGoodsList(ilt):
    # 定义输出格式
    tplt = "{:4}\t{:8}\t{:16}"
    print(tplt.format("序号", "价格", "商品名称"))
    # 循环遍历打印爬取到的信息,第一种方式
    for i in range(len(ilt)):
        print(tplt.format(i + 1, ilt[i][0], ilt[i][1]))
    # 第二种方式,g是从ilt循环遍历每元组的每项,g[0],g[1]是价格和题目
    # count = 0
    # for g in ilt:
    #     count = count + 1
    #     print(tplt.format(count, g[0], g[1]))

#定义主函数,写一下变量
def main():
    goods = '书包'
    # depth是爬取的深度,也就是爬取几页
    depth = 3
    start_url = 'https://s.taobao.com/search?q=' + goods
    infoList = []
    for i in range(depth):
        try:
            url = start_url + '&s=' + str(44 * i)
            # 设置登录的头信息,注意cookie是登陆页面点击登录获取的头信息
            loginheaders = {
                "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36",
                "cookie": "t=4ddf8b70981503ff445f594236c71e96; thw=cn; cookie2=12bdc5dde93e3514edca199a193f232f; _tb_token_=e45e8be4e50be; _samesite_flag_=true; enc=201s0rRJEHeguaLLCC6IAbLJao3k%2FWpbaR4FH6jpx1T6haa1auRivMShxlx1S0Ul3c3meKsTzPUcwTv3aEzt1Q%3D%3D; hng=CN%7Czh-CN%7CCNY%7C156; alitrackid=www.taobao.com; lastalitrackid=login.taobao.com; mt=ci=0_0; JSESSIONID=C7EA2D8019D08587402413BDBF38AFF0; cna=k8/5Fvt7vU8CAbfIPj2evd1M; l=eBxklgrHqCn48L6LBOfZourza77TlIRfguPzaNbMiT5P_2fH75cAWZjFnt8MCnGVnsZw-354uljQBrT8xyUBh6Yl3ZQ7XPQo3dTh.; isg=BFFRjiZN687i_QTKjM76nskzYF3rvsUwkMIhzjPmIpg42nAseQpbAHY4fK48Ul1o; tfstk=cwyCBJqLmeYQTTeeQzsZTKVPlrkPZj_sj6gLA5hd3EP90jECibvqlvj4ZFvtMc1..; sgcookie=EjxPeg5aM1t9jg2xwmUNw; unb=2639049752; uc1=cookie14=UoTUMtQjutczRQ%3D%3D&cookie21=VFC%2FuZ9ajC0X15Rzt0LhxQ%3D%3D&pas=0&existShop=false&cookie15=WqG3DMC9VAQiUQ%3D%3D&cookie16=VT5L2FSpNgq6fDudInPRgavC%2BQ%3D%3D; uc3=nk2=2nZbzUmLMMCi2g%3D%3D&vt3=F8dBxGXMemSB7fdhNUQ%3D&lg2=V32FPkk%2Fw0dUvg%3D%3D&id2=UU6idYdXStUjdg%3D%3D; csg=8948e7ae; lgc=%5Cu90ED%5Cu5DDD%5Cu5DDD1998; cookie17=UU6idYdXStUjdg%3D%3D; dnk=%5Cu90ED%5Cu5DDD%5Cu5DDD1998; skt=b778092dd81708b9; existShop=MTU4ODQ3NzIxNQ%3D%3D; uc4=id4=0%40U2xvIZeyY044%2Fg4ssnvrOTWRM69N&nk4=0%402EwyHO%2FQs1K5Yt3PADSqX0DTequA; tracknick=%5Cu90ED%5Cu5DDD%5Cu5DDD1998; _cc_=V32FPkk%2Fhw%3D%3D; _l_g_=Ug%3D%3D; sg=82b; _nk_=%5Cu90ED%5Cu5DDD%5Cu5DDD1998; cookie1=BvGDAyiO3yivOSSiEiVryF%2FdX85RndH78rFBY0y3kOc%3D"
            }
            html = getHTMLText(url, loginheaders)
            parsePage(infoList, html)
        except:
            continue
    printGoodsList(infoList)


main()

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149106.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux查看redis命令,linux查看redis版本怎么操作?具体示例

    linux查看redis命令,linux查看redis版本怎么操作?具体示例对于有相关开发经验的朋友来说,linux作为一套免费使用和自由传播的类UNIX操作系统,相信你们肯定是比较亲切的,那么今天我们一起了解的是,怎么用linux查看redis版本号?工具/原料:linux,redis方法/步骤:登录Linux服务器,使用命令:whereisredis查找到redis的安装目录。用cd命令进入该目录。进入该目录下的bin目录。使用ls命令列出该目录下的文件结构,可以发…

    2022年6月7日
    120
  • java静态代理实现_静态注册和动态注册的优缺点

    java静态代理实现_静态注册和动态注册的优缺点思考:以常见的增删改查为例,在执行增删改的时候我们需要开启事务,执行完成后需要提交事务假如说你Service里有100个增删改的方法,那这100个方法里除了你自己真正需要处理的业务逻辑外,每个方法都还需要去关注开启事务,提交事务这些动作。那有没有稍微好点的办法解决呢?于是就出现了代理模式的概念,那什么是代理模式呢?1、什么是代理模式简单来说:代理就是对目标方法进行增强。什么意思呢?…

    2022年10月17日
    1
  • Git下载安装手把手教程[通俗易懂]

    Git下载安装手把手教程[通俗易懂]Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。下面我们来详细介绍下,在windows10系统下载和安装git的教程,文章结尾有福利哦!Git安装手把手安装教程:第一步:下载Git打开Git官网下载地址https://git-scm.com/downloads因为我使用Windows系统上的浏览器访问的,Git官网自动之别到了我使用的操作系统.

    2022年5月30日
    38
  • 国内不用备案的cdn_2018年广电总局电影备案查询

    国内不用备案的cdn_2018年广电总局电影备案查询随着行业老大哥百度云加速的CDN关闭,不,不能说是关闭,是不再面向国外用户(实则是不再面向未备案中国用户),喜欢简单而快捷方式的草根大佬们不知道该何去何从,特别是用习惯了CDN的大佬,更是讨厌裸奔的感觉,没了层CDN,还真就觉得不安全了!事实上,CDN确实让我们的网站加速了不少,当然,排除那些劣质的CDN,有人可能会感觉不用CDN自己的网站反而会快很多,这个是错误的认知,你的网站访问不大的…

    2025年10月21日
    2
  • 腾讯股票数据接口

     0:未知 1:名字:name 2:代码:code 3:现价:trade 4:昨收:yestclose 5:今开:open 6:成交量(手):volume 7:外盘 8:内盘 9:买一10:买一量(手)11-18:买二买五19:卖一20:卖一量21-28:卖二卖五29:最近逐笔成交30:时间31:涨跌:change32:涨跌幅:changepercent33:最高:high34:最低:low3…

    2022年4月8日
    183
  • ClassIn 退出专注学习模式 关闭专注学习模式「建议收藏」

    ClassIn 退出专注学习模式 关闭专注学习模式「建议收藏」ClassIn是一个常用的在线上课软件,从3.0.2.130开始推出了“专注学习模式”,窗口会全屏且不能切换窗口。可有时我们有其他需要,要退出专注学习模式,这时就要使用其它的方法了。这里提供一个我自己做的小程序。

    2022年5月24日
    102

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号