Python——批量获取某宝商品价格

举报
Vista_AX 发表于 2023/06/27 22:29:05 2023/06/27
【摘要】 00 前情提要最近,地摊经济突然火了一把,微博上各种相关的段子也是层出不穷。我灵机一动,地摊经济好是好,可是买什么东西呢?价格该怎么定位呢?价格太高,别人怼你淘宝上是你价格的一半,你个黑心商家!!!价格太低,自己又觉得费了这么大工夫,赚头又不大,简直是个可怜弟弟!!!所以,我需要用大量的数据来给自己适当的定价参考,如果我能够检索淘宝上10000件某个宝贝的定价,不管是取平均值还是取众数,都...

00 前情提要

最近,地摊经济突然火了一把,微博上各种相关的段子也是层出不穷。

image.png

我灵机一动,地摊经济好是好,可是买什么东西呢?价格该怎么定位呢?
价格太高,别人怼你淘宝上是你价格的一半,你个黑心商家!!!
价格太低,自己又觉得费了这么大工夫,赚头又不大,简直是个可怜弟弟!!!

所以,我需要用大量的数据来给自己适当的定价参考,如果我能够检索淘宝上10000件某个宝贝的定价,不管是取平均值还是取众数,都能给我提供很大的参考价值。

说干就干!!!


01 实现背景

1、某宝搜索宝贝页面:https://uland.taobao.com/sem/tbsearch,我们获取价格的数据来源

2、selenium模块,用于模仿用户对浏览器的任意操作

3、Pyquery模块,用于解析获取到的网页内容

4、time模块,配合selenium模块用于定时刷新页面



02 实现目标

首先利用selenium模块模仿浏览器点击淘宝搜索页面的网页链接,再通过Pyquery模块进一步筛选搜索结果,获取货物价格等关键信息



03 注意事项

1、源代码以iphone x产品为例进行搜索,如需搜索其他货物,可在源代码中自行替换对应关键词

KEYWORD='iphone x'

2、某宝网站由于 反爬虫机制,若长期未登录情况下搜索,将被禁止搜索。所以我们需要在登录情况下进行搜索

3、如需将获取内容输入到本地文件,可自行利用with…open操作


04 实现源码

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from urllib.parse import quote
from pyquery import PyQuery #解析器,可以配合各种爬虫库,用于解析页面
import time

KEYWORD='iphone x'   #设定检索的关键字为iphone x
browser = webdriver.Chrome('C:\\Users\\Dell\\Desktop\\Python\\chromedriver.exe')  #需事先下载chrome浏览器的核心控制模块,然后定位到此处
wait = WebDriverWait(browser,10)  #页面刷新时间设置为10s

def crawl_page(page):
	try:          #使用try...except...差错控制,避免程序异常终止
		url = 'https://s.taobao.com/search?q='+quote(KEYWORD) #访问到淘宝搜索页面,但先得淘宝扫码登录
		browser.get(url)

		time.sleep(5)

		if page > 1:
			page_box = wait.until(
			EC.presence_of_element_located(
					(By.CSS_SELECTOR,'.input.J_Input')
				)
			)
			submit_button = wait.until(
			EC.element_to_clickable(
					(By.CSS_SELECTOR,'.btn.J_Submit')
				)
			)
			page_box.clear()
			page_box.send_keys(page)
			submit_button.click()

		wait.until(
			EC.presence_of_element_located(
					(By.CSS_SELECTOR,'.m-itemlist .items .item ')
				)
			)

		get_products()
	except:
		crawl_page(page)

def get_products():
	html = browser.page_source
	doc = PyQuery(html)   #用pyquery解析页面内容
	items = doc('#mainsrp-itemlist .items .item').items()
	price_list=[]
	for item in items:
		product = {
		#'img' : item.find('.img').attr('data_src'),
		'price' : item.find('.price').text(),
		'deal' : item.find('.deal-cnt').text(),
		'title' : item.find('.title').text(),
		#'shop' : item.find('.dsrs').text(),
		'location':item.find('.location').text()
		}
		#print(product)
		price_list.append(product)

	for i in range(100):
		print(price_list[i])
	#for i in range(len(price_list)):
		#with open('price.txt','a+') as file:
			#file.write(price_list[i])
	

crawl_page(1)



05 实现效果

源代码界面

image.png



运行后,Chrome浏览器受控件控制会自动跳转到淘宝登录界面,这里我们选择扫码登录即可

image.png

登录成功后,控件会帮助我们跳转到带有关键字iphone x的搜索界面

image.png


此时,python程序已经开始获取相关关键信息

image.png


有了以上价格数据作为定价的支撑,想必各位老板的定价问题也将会迎刃而解,最终希望各位老板发大财!!!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。