Python爬虫爬一爬血氧仪


奥密克戎比原先的设想要凶猛的多,抢退烧药,抢口罩,抢抗原,现在要抢血氧仪,实际上我是没抢上啥/(ㄒoㄒ)/~~,超前意识太单薄,但愿大家都能平稳度过这一关吧。
血氧仪现在也是抢破头,标称现货的一周发出来就不错了,算了,不抢了。用点爬虫技术爬一爬,看看都是啥。

策略

在平台主页上搜索一下血氧仪,马上就列出了一堆产品,很多页,通过分析网页地址找到规律,可以由python自动访问。商品信息的提取,这里还是简单使用字符串函数来处理,确实太low,效率也低。

源码

部分源码,隐去涉及的版权问题部分o(╥﹏╥)o

import requests
import re
import time

goods = '血氧仪'
pre_url = 'https://xxxxxxxxxx/Search?keyword=' + goods + '&qrst=1&wq=' + goods + '&stock=1&pvid=46acaecdac14432e93eb3cb00fe8abfd&cid3=12587&cid2=9197'
headers = {'User-Agent':
               'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0'}
for p in range(1, 5):
    url = pre_url + '&page=' + str(2 * p - 1) + '&s=' + str((p - 1) * 60 + 1) + '&click=0'
    html = requests.get(url, headers=headers)  # Get方式获取网页数据
    strHtml = html.text
#    print(strHtml)

    try:
        plt = re.findall(r'<em>¥</em><i data-price=.*?\.\d\d</i>', strHtml)  # 获取商品价格,搜索以<em>¥</em><i>开头,以.数字数字结尾的字符串
        for i in range(len(plt)):
            price = plt[i].split('>')[3].split('<')[0]
            goodId = plt[i].split('"')[1]
#            print(plt[i])
#            print(i)
#            print(price)
#            print(goodId)
            goodUrl = 'https://xxxxxxxx/'+str(goodId)+'.html'
            goodHtml = requests.get(goodUrl, headers=headers)  # Get方式获取网页数据
            infoGood = goodHtml.text
#            print(infoGood)
            tlt = re.findall(r'<div class="sku-name">\n.*?</div>',infoGood,re.S)
            name = tlt[0].split('\n')[1].split('<')[0].strip()
            fprt = "{:^5}\t{:^10}\t{:^20}\t{:^20}"  # 设定一个print模板,用大括号{}来定义槽函数
            print(fprt.format((p-1)*30+i,price,name,goodUrl))
            time.sleep(2)
#            print(tlt[i])
    #            price = plt[i].split('<i>')[1]
    #            title = tlt[i]
    #            infoList.append([price, title])  # append() 方法用于在列表末尾添加新的对象。
    except:  # 让程序不会因为异常执行而溢出
        print("分析异常")
    time.sleep(2)

结果

打印的结果如下,有些商品的名称没给出来,后来试了一下,应该是拒绝访问了,多sleep会吧
在这里插入图片描述

引用

this

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值