某东商品价格抓取

今天做了一个京东商品价格的需求,整理一下。

第一步:打开Chrome浏览器自带抓包工具,选择network选项卡
在这里插入图片描述
第二步:按下Ctrl+F5,打开search,在里面输入价格,例如图中输入的是1318.00.然后回车就会出现包含价格的接口出现
在这里插入图片描述
分析下接口,可以看到价格为‘price’下面的’p’字段中。
在这里插入图片描述
第三步:分析下请求接口,为get请求。
在这里插入图片描述
第四步,分析下请求url,发现url形式为:https://item-soa.jd.com/getWareBusiness?skuId= ,只需要获取到商品id,即可请求到价格。

第五步,商品id一般包含在商品的url中,可通过正则表达式,提取出商品id,构造商品价格的url

示例如下:
url为 :‘https://item.jd.com/5915827.html’

skuid= re.findall('/(\d+?)\.', url)

即可获取到商品ID

思路为上文所述,下文附上代码,感兴趣可以看下:

import json
import re
import time
import pandas as pd
from lxml import etree
import numpy as np
import requests
import random

class JDSpider(object):
    def __init__(self):
        self.url_temp = 'https://item-soa.jd.com/getWareBusiness?skuId={}'
        self.headers = {
            "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",
        }
    def get_url_list(self):
        df = pd.read_excel('../待处理文件/京东.xlsx',sheet_name='京东链接')
        return df

    def parse(self,url):

        time.sleep(0.4)
        try:
            rest = requests.get(url,headers=self.headers)
            #https://item-soa.jd.com/getWareBusiness?&skuId=   价格url
            # html=etree.HTML(rest.text)

            return rest.content.decode()

        except requests.exceptions.ProxyError:
            time.sleep(3)
        except  requests.exceptions.SSLError:
            time.sleep(3)
        except  ValueError:
            pass

    def get_price(self,str_html):
        json_html = json.loads(str_html)
        price = None
        try:
            price = json_html["price"]["p"]
        except Exception as e:
            price = '-1.00'
        return price


    def save(self,df,price_list):
        try:
            df['价格'] = price_list
            df.to_excel('../待处理文件/京东价格.xlsx', index=False)
        except ValueError:
            pass


    def run(self):
        df = self.get_url_list()
        #
        skuId_list=[]

        for str in df['链接']:
            result = re.findall('/(\d+?)\.', str)
            # print(result)
            skuId_list.append(result[0])

        skuId_list = df['链接'].apply(lambda x:re.findall('/(\d+?)\.',x)[0])

        url_list = [self.url_temp.format(i) for i in skuId_list]
        price_list = []
        for url in url_list:

            rest = self.parse(url)
            price = self.get_price(rest)
            print(price)

            price_list.append(price)



        self.save(df,price_list)


if __name__ == '__main__':
    js = JDSpider()
    js.run()
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抓取Python中的商品价格,你可以使用网页爬虫技术来获取商品信息。通过分析网页的HTML结构,你可以找到包含商品价格的元素,并提取出来。 举个例子,你可以使用Python的第三方库,如Beautiful Soup,来解析网页并提取出商品价格。首先,你需要使用HTTP请求库,如Requests,获取网页的内容。然后,你可以使用Beautiful Soup来解析HTML并查找包含商品价格的元素。 在引用中的代码示例中,可以看到使用了Selenium库来模拟浏览器操作,获取网页上的商品信息。可以根据具体情况修改代码,只提取出商品价格部分。 以下是一个示例代码,展示了如何使用Beautiful Soup来提取商品价格: ```python import requests from bs4 import BeautifulSoup # 发送GET请求获取网页内容 url = 'your_url_here' response = requests.get(url) html = response.text # 使用Beautiful Soup解析HTML soup = BeautifulSoup(html, 'html.parser') # 查找包含商品价格的元素 price_element = soup.find('span', class_='p-price') # 提取商品价格 price = price_element.text # 打印商品价格 print(price) ``` 请将`your_url_here`替换为实际的网页链接。通过以上代码,你可以抓取到商品的价格。注意,具体的网页结构可能会有所不同,你需要根据实际情况调整代码。 总结起来,要抓取Python中的商品价格,你可以使用网页爬虫技术,通过解析HTML并查找包含商品价格的元素来提取出来。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python笔记.docx](https://download.csdn.net/download/bxy0806/88235414)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Python爬虫 批量采集京东商品数据,实时了解商品价格走势](https://blog.csdn.net/ooowwq/article/details/122435249)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [【Python】爬虫入门级实战讲解:爬取商城的商品名称及价格](https://blog.csdn.net/jcwang710448116/article/details/82256956)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值