下载地址:www.pan38.com/dow/share.p… 提取密码:2891
这个闲鱼秒拍系统包含四个主要模块:主程序入口、商品监控、自动下单和配置管理。使用时需要配置cookie和监控参数,系统会自动监控指定关键词的商品并在发现低价商品时自动下单。
import time from monitor import XianyuMonitor from order import AutoOrder from config import load_config
def main(): config = load_config() monitor = XianyuMonitor( keywords=config['keywords'], max_price=config['max_price'], interval=config['monitor_interval'] ) order_bot = AutoOrder( cookie=config['cookie'], max_retry=config['max_retry'] )
while True:
try:
items = monitor.search_items()
for item in items:
if monitor.is_bargain(item):
order_bot.purchase(item)
print(f"成功秒拍商品: {item['title']}")
time.sleep(config['monitor_interval'])
except Exception as e:
print(f"发生错误: {str(e)}")
time.sleep(60)
if name == "main": main()
import requests from bs4 import BeautifulSoup import re import json
class XianyuMonitor: def init(self, keywords, max_price, interval=10): self.keywords = keywords self.max_price = max_price self.interval = interval self.headers = { 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1' }
def search_items(self):
url = f"https://s.2.taobao.com/list/list.htm?q={self.keywords}&search_type=item"
response = requests.get(url, headers=self.headers)
soup = BeautifulSoup(response.text, 'html.parser')
items = []
for item in soup.select('.item-info'):
try:
title = item.select_one('.item-title').text.strip()
price = float(re.search(r'\d+\.\d+', item.select_one('.price').text).group())
item_id = item.select_one('.item-title')['href'].split('id=')[1]
items.append({
'id': item_id,
'title': title,
'price': price,
'url': f"https://2.taobao.com/item.htm?id={item_id}"
})
except:
continue
return items
def is_bargain(self, item):
return item['price'] <= self.max_price * 0.7
time import random from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC
class AutoOrder: def init(self, cookie, max_retry=3): self.cookie = cookie self.max_retry = max_retry self.driver = None
def init_driver(self):
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
self.driver = webdriver.Chrome(options=options)
def purchase(self, item):
if not self.driver:
self.init_driver()
for _ in range(self.max_retry):
try:
self.driver.get(item['url'])
for c in self.cookie.split(';'):
name, value = c.strip().split('=', 1)
self.driver.add_cookie({'name': name, 'value': value})
self.driver.refresh()
WebDriverWait(self.driver, 10).until(
EC.presence_of_element_located((By.CLASS_NAME, 'buy-btn'))
).click()
WebDriverWait(self.driver, 10).until(
EC.presence_of_element_located((By.CLASS_NAME, 'submit-btn'))
).click()
time.sleep(random.uniform(0.5, 1.5))
return True
except Exception as e:
print(f"下单失败: {str(e)}")
time.sleep(1)
return False