item_search_shop - 获得1688店铺商品列表

item_search_shop - 获得1688店铺商品列表

测试地址:点击此处

Result Object:
---------------------------------------
{
	"user": {
		"id": null,
		"nick": null,
		"good_num": "9",
		"level": null,
		"created": null,
		"shop_type": null,
		"user_num_id": null,
		"company_id": null,
		"company_dj": null,
		"company_time": null,
		"company_info": null,
		"profile_data": null,
		"cid": "-1",
		"sid": null,
		"pic_url": null,
		"video": null,
		"title": null,
		"address": null,
		"phone": null,
		"zhuy": "https://m.1688.com/winport/.html",
		"fh_score": null,
		"hm_score": null,
		"xy_score": null,
		"ht_score": null,
		"menu": null,
		"service_score": null,
		"tplogo": null,
		"ratelogourl": null,
		"tpyear": null,
		"bsrdata": null
	},
	"items": {
		"item": [
			{
				"num_iid": "651472472704",
				"title": "全新款i13 pro 6.8寸水滴大屏10+512G全网通5G低价智能手机批发",
				"pic_url": "https://cbu01.alicdn.com/img/ibank/O1CN01jB7zEO285Y8dRoOIo_!!2200733087881-0-cib.jpg",
				"price": "688.0",
				"detail_url": "https://m.1688.com/offer/651472472704.html"
			},
			{
				"num_iid": "669171703088",
				"title": "2022i新款Pad Pro12寸护眼屏512G全网通学习网课游戏平板电脑批发",
				"pic_url": "https://cbu01.alicdn.com/img/ibank/O1CN01GO9d0B285Y8OzdfUa_!!2200733087881-0-cib.jpg",
				"price": "669.0",
				"detail_url": "https://m.1688.com/offer/669171703088.html"
			},
			{
				"num_iid": "605722027272",
				"title": "全新款i12 pro 6.5寸水滴大屏8+256G全网通5G低价智能手机批发",
				"pic_url": "https://cbu01.alicdn.com/img/ibank/O1CN01ph7Tcf285Y4oYOwel_!!2200733087881-0-cib.jpg",
				"price": "598.0",
				"detail_url": "https://m.1688.com/offer/605722027272.html"
			},
			{
				"num_iid": "664797493611",
				"title": "2022爆款X50 Pro 7.2寸水滴大屏12+512G全网通低价智能手机批代发",
				"pic_url": "https://cbu01.alicdn.com/img/ibank/O1CN014ObCis285Y8NNEYcX_!!2200733087881-0-cib.jpg",
				"price": "1098.0",
				"detail_url": "https://m.1688.com/offer/664797493611.html"
			},
			{
				"num_iid": "671011848381",
				"title": "爆款i13 Pro Max 6.8寸水滴大屏12+512G全网通低价智能手机批代发",
				"pic_url": "https://cbu01.alicdn.com/img/ibank/O1CN01D3FIFx285Y8vs2ccX_!!2200733087881-0-cib.jpg",
				"price": "798.0",
				"detail_url": "https://m.1688.com/offer/671011848381.html"
			},
			{
				"num_iid": "669702477211",
				"title": "爆款i13 Pro Max 6.8寸水滴大屏12+512G全网通低价智能手机批代发",
				"pic_url": "https://cbu01.alicdn.com/img/ibank/O1CN01wy6e5V285Y6jxQrGQ_!!2200733087881-0-cib.jpg",
				"price": "788.0",
				"detail_url": "https://m.1688.com/offer/669702477211.html"
			},
			{
				"num_iid": "661723562156",
				"title": "爆款i12 Pro Max 6.8寸水滴大屏12+512G全网通低价智能手机批代发",
				"pic_url": "https://cbu01.alicdn.com/img/ibank/O1CN016acpb9285Y5RZQzLu_!!2200733087881-0-cib.jpg",
				"price": "798.0",
				"detail_url": "https://m.1688.com/offer/661723562156.html"
			},
			{
				"num_iid": "655092993458",
				"title": "爆款hviv m30 pro6.8寸水滴大屏256G全网通低价智能手机批代发",
				"pic_url": "https://cbu01.alicdn.com/img/ibank/O1CN01kVjyqE285Y7IstBfs_!!2200733087881-0-cib.jpg",
				"price": "998.0",
				"detail_url": "https://m.1688.com/offer/655092993458.html"
			},
			{
				"num_iid": "669702477203",
				"title": "爆款hviv m30 pro6.8寸水滴大屏256G全网通低价智能手机批代发",
				"pic_url": "https://cbu01.alicdn.com/img/ibank/O1CN013GGjQu285Y7LPTZA6_!!2200733087881-0-cib.jpg",
				"price": "998.0",
				"detail_url": "https://m.1688.com/offer/669702477203.html"
			},
			{
				"num_iid": "642336696924",
				"title": "7.2寸大屏安卓10工作室root纯净版4+128G云群控抖音快手阅读手机",
				"pic_url": "https://cbu01.alicdn.com/img/ibank/O1CN01p7hEkW285Y7sZqf9A_!!2200733087881-0-cib.jpg",
				"price": "669.0",
				"detail_url": "https://m.1688.com/offer/642336696924.html"
			},
			{
				"num_iid": "643409643576",
				"title": "7.2寸大屏安卓9.0工作室root纯净版4+64G云群控抖音快手阅读手机",
				"pic_url": "https://cbu01.alicdn.com/img/ibank/O1CN01ihHuZh285Y4EzmyDU_!!2200733087881-0-cib.jpg",
				"price": "499.0",
				"detail_url": "https://m.1688.com/offer/643409643576.html"
			},
			{
				"num_iid": "642720097254",
				"title": "6.8寸大屏安卓10工作室root纯净版4+128G云群控抖音快手阅读手机",
				"pic_url": "https://cbu01.alicdn.com/img/ibank/2020/863/803/18762308368_2101792098.jpg",
				"price": "559.0",
				"detail_url": "https://m.1688.com/offer/642720097254.html"
			},
			{
				"num_iid": "617854475887",
				"title": "电视话购物工作室root纯净版4+64G云群控抖音快手微信手机批发",
				"pic_url": "https://cbu01.alicdn.com/img/ibank/2019/382/361/12287163283_2101792098.jpg",
				"price": "479.0",
				"detail_url": "https://m.1688.com/offer/617854475887.html"
			},
			{
				"num_iid": "589984649469",
				"title": "6.5寸大屏安卓9.0工作室root纯净版4+64G云群控抖音快手阅读手机",
				"pic_url": "https://cbu01.alicdn.com/img/ibank/2019/242/368/10339863242_902098348.jpg",
				"price": "469.0",
				"detail_url": "https://m.1688.com/offer/589984649469.html"
			}
		],
		"total_results": "14",
		"page_size": 20,
		"pagecount": 1,
		"page": "1",
		"url": null
	},
	"error": "",
	"secache": "3bbcb618f225b45561bbb1686d15b91c",
	"secache_time": 1650269254,
	"secache_date": "2022-04-18 16:07:34",
	"translate_status": "",
	"translate_time": 0,
	"language": {
		"default_lang": "cn",
		"current_lang": "cn"
	},
	"reason": "",
	"error_code": "0000",
	"cache": 1,
	"api_info": "today:2 max:11000",
	"execution_time": "0.558",
	"server_time": "Beijing/2022-04-19 09:45:18",
	"client_ip": "106.6.38.158",
	"call_args": {
		"seller_nick": "b2b-2200733087881719de",
		"start_price": "0",
		"end_price": "0",
		"page": "1"
	},
	"api_type": "1688",
	"translate_language": "zh-CN",
	"translate_engine": "baidu_api",
	"server_memory": "3.88MB",
	"request_id": "gw-3.625e142d97bd5",
	"last_id": "899903609"
}
import time import random import json import pandas as pd 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 import logging # 配置日志 logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logger = logging.getLogger(__name__) class TaobaoCrawler: def __init__(self): """初始化游客模式爬虫""" self.driver = None self.products_data = [] self.setup_browser() def setup_browser(self): """设置浏览器配置""" options = webdriver.ChromeOptions() # 反检测配置 options.add_argument('--disable-blink-features=AutomationControlled') options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') options.add_argument('--disable-extensions') options.add_argument( '--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0') # 隐藏自动化特征 options.add_experimental_option('excludeSwitches', ['enable-automation']) options.add_experimental_option('useAutomationExtension', False) # 可选:无头模式(生产环境使用) # options.add_argument('--headless') try: # 直接使用系统 ChromeDriver,不通过 webdriver_manager self.driver = webdriver.Chrome(options=options) # 执行脚本来隐藏webdriver特征 self.driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})") self.driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', { 'source': ''' Object.defineProperty(navigator, 'webdriver', {get: () => undefined}) Object.defineProperty(navigator, 'languages', {get: () => ['zh-CN', 'zh']}) ''' }) logger.info("浏览器初始化成功 - 游客模式") except Exception as e: logger.error(f"浏览器初始化失败: {str(e)}") raise def search_products(self, keyword, pages=3, sort_by="sale-desc"): """搜索商品并爬取多页数据 - 改进版""" try: # 构建搜索URL,添加排序参数 search_url = f"https://s.taobao.com/search?q={keyword}&sort={sort_by}" self.driver.get(search_url) logger.info(f"搜索关键词: {keyword}, 排序方式: {sort_by}") # 等待搜索结果加载 - 使用更稳定的选择器 WebDriverWait(self.driver, 15).until( EC.presence_of_element_located((By.CSS_SELECTOR, ".CardV2--doubleCard--_OJ1T8j")) ) # 爬取多页数据 for page in range(1, pages + 1): logger.info(f"正在爬取第 {page} 页") self._scrape_current_page() # 如果不是最后一页,尝试翻页 if page < pages: if not self._go_to_next_page(): logger.warning("无法翻页,停止爬取") break # 随机延迟避免被封 time.sleep(random.uniform(3, 7)) return True except Exception as e: logger.error(f"搜索商品失败: {str(e)}") return False def _go_to_next_page(self): """翻页到下一页""" try: # 尝试多种翻页方式 next_selectors = [ ".next-btn.next-next", # 淘宝的下一页按钮 ".next-btn", "button[aria-label*='下一页']", ".next-btn[aria-label*='下一页']" ] for selector in next_selectors: try: next_btn = WebDriverWait(self.driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, selector)) ) self.driver.execute_script("arguments[0].click();", next_btn) # 等待新页面加载 WebDriverWait(self.driver, 15).until( EC.presence_of_element_located((By.CSS_SELECTOR, ".CardV2--doubleCard--_OJ1T8j")) ) logger.info("成功翻页到下一页") return True except: continue return False except Exception as e: logger.error(f"翻页失败: {str(e)}") return False def _scrape_current_page(self): """爬取当前页面的商品数据 - 改进版""" try: # 使用实际的选择器 WebDriverWait(self.driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, ".CardV2--doubleCard--_OJ1T8j")) ) # 获取商品元素 items = self.driver.find_elements(By.CSS_SELECTOR, ".CardV2--doubleCard--_OJ1T8j") if not items: # 备用选择器 items = self.driver.find_elements(By.CSS_SELECTOR, ".CardV2--mainPicAndDesc--Eb_BxDU") logger.info(f"找到 {len(items)} 个商品") successful_count = 0 for index, item in enumerate(items): try: # 滚动到元素位置 self.driver.execute_script("arguments[0].scrollIntoView({block: 'center'});", item) time.sleep(0.5) product_data = self._extract_product_data(item) if product_data: self.products_data.append(product_data) successful_count += 1 logger.info(f"成功提取商品 {successful_count}: {product_data['title'][:20]}...") # 每5个商品休息一下 if (index + 1) % 5 == 0: time.sleep(random.uniform(1, 3)) except Exception as e: logger.error(f"提取第{index + 1}个商品失败: {str(e)}") continue logger.info(f"当前页面爬取完成,成功获取 {successful_count}/{len(items)} 个商品") except Exception as e: logger.error(f"爬取当前页面失败: {str(e)}") def _extract_product_data(self, item): """从商品元素中提取数据 - 改进版""" try: # 提取基本信息 - 使用实际的选择器 title = self._safe_find_text(item, ".Title--title--wJY8TeA span") # 提取价格(需要组合整数和小数) price_int = self._safe_find_text(item, ".Price--priceInt--BXYeCOI") price_float = self._safe_find_text(item, ".Price--priceFloat--rI_BYho") price = f"{price_int}{price_float}" if price_int else "未知" # 提取销量信息 sales = self._safe_find_text(item, ".Price--realSales--wnhaqVr") # 提取店铺信息 shop_name = self._safe_find_text(item, ".ShopInfo--shopNameText--kxQC2cC") # 提取发货地 location = self._safe_find_text(item, ".Price--procity--Na1DQVe") # 提取商品链接 try: link_element = item.find_element(By.CSS_SELECTOR, ".Title--title--wJY8TeA a") product_url = link_element.get_attribute("href") except: product_url = "" # 构建商品数据 product_data = { "title": title or "未知", "price": price or "未知", "shop_name": shop_name or "未知", "sales": sales or "0", "location": location or "未知", "url": product_url, "crawl_time": time.strftime("%Y-%m-%d %H:%M:%S") } return product_data except Exception as e: logger.error(f"提取商品数据失败: {str(e)}") return None def _safe_find_text(self, parent, selector): """安全查找元素文本""" try: element = parent.find_element(By.CSS_SELECTOR, selector) return element.text.strip() except: return "" def save_to_csv(self, filename="taobao_products.csv"): """将爬取的数据保存为CSV文件""" if not self.products_data: logger.warning("没有数据可保存") return False try: df = pd.DataFrame(self.products_data) df.to_csv(filename, index=False, encoding='utf-8-sig') logger.info(f"数据已保存到 {filename},共 {len(self.products_data)} 条记录") return True except Exception as e: logger.error(f"保存CSV失败: {str(e)}") return False def save_to_json(self, filename="taobao_products.json"): """将爬取的数据保存为JSON文件""" if not self.products_data: logger.warning("没有数据可保存") return False try: with open(filename, 'w', encoding='utf-8') as f: json.dump(self.products_data, f, ensure_ascii=False, indent=4) logger.info(f"数据已保存到 {filename},共 {len(self.products_data)} 条记录") return True except Exception as e: logger.error(f"保存JSON失败: {str(e)}") return False def get_statistics(self): """获取爬取统计信息""" if not self.products_data: return "没有数据" total = len(self.products_data) shops = len(set(item['shop_name'] for item in self.products_data)) return f"总计: {total} 个商品, {shops} 个店铺" def close(self): """关闭浏览器""" if hasattr(self, 'driver') and self.driver: self.driver.quit() logger.info("浏览器已关闭") def __del__(self): """析构函数,确保浏览器被关闭""" self.close() # 使用示例 if __name__ == "__main__": crawler = TaobaoCrawler() try: # 搜索商品,按销量排序 crawler.search_products("女装", pages=60, sort_by="sale-desc") # 保存数据 crawler.save_to_csv("taobao_products.csv") crawler.save_to_json("taobao_products.json") # 打印统计信息 print(crawler.get_statistics()) finally: crawler.close()将这段代码里面的谷歌浏览器全都换成edge浏览器
最新发布
11-04
要将原代码中使用的谷歌浏览器相关配置和驱动替换为 Edge 浏览器的配置和驱动,可按以下步骤修改: ### 1. 安装 Selenium 和配置 Edge 浏览器驱动 安装 Selenium 可使用命令 `pip install selenium`,若因网络问题安装失败,可使用国内镜像 `pip install -i https://mirrors.aliyun.com/pypi/simple/ Selenium`。配置 Edge 浏览器驱动,需查看 Edge 浏览器版本号,然后到 [Microsoft Edge WebDriver](https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/) 下载对应版本的驱动,下载后解压,将其复制到 Python 解释器目录下,并将驱动 `msedgedriver.exe` 重命名为 `MicrosoftWebDriver.exe`,文件名不对会导致调用不到[^2][^3][^4]。 ### 2. 修改代码中的浏览器初始化部分 将原代码中 Chrome 浏览器相关的初始化和配置替换为 Edge 浏览器的配置。以下是修改后的代码示例: ```python import time import random import json import pandas as pd 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 import logging # 配置日志 logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logger = logging.getLogger(__name__) class TaobaoCrawler: def __init__(self): """初始化游客模式爬虫""" self.driver = None self.products_data = [] self.setup_browser() def setup_browser(self): """设置浏览器配置""" options = webdriver.EdgeOptions() # 反检测配置 options.add_argument('--disable-blink-features=AutomationControlled') options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') options.add_argument('--disable-extensions') options.add_argument( '--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0') # 隐藏自动化特征 options.add_experimental_option('excludeSwitches', ['enable-automation']) options.add_experimental_option('useAutomationExtension', False) # 可选:无头模式(生产环境使用) # options.add_argument('--headless') try: # 初始化 Edge 浏览器驱动 self.driver = webdriver.Edge(options=options) # 执行脚本来隐藏webdriver特征 self.driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})") self.driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', { 'source': ''' Object.defineProperty(navigator, 'webdriver', {get: () => undefined}) Object.defineProperty(navigator, 'languages', {get: () => ['zh-CN', 'zh']}) ''' }) logger.info("浏览器初始化成功 - 游客模式") except Exception as e: logger.error(f"浏览器初始化失败: {str(e)}") raise def search_products(self, keyword, pages=3, sort_by="sale-desc"): """搜索商品并爬取多页数据 - 改进版""" try: # 构建搜索URL,添加排序参数 search_url = f"https://s.taobao.com/search?q={keyword}&sort={sort_by}" self.driver.get(search_url) logger.info(f"搜索关键词: {keyword}, 排序方式: {sort_by}") # 等待搜索结果加载 - 使用更稳定的选择器 WebDriverWait(self.driver, 15).until( EC.presence_of_element_located((By.CSS_SELECTOR, ".CardV2--doubleCard--_OJ1T8j")) ) # 爬取多页数据 for page in range(1, pages + 1): logger.info(f"正在爬取第 {page} 页") self._scrape_current_page() # 如果不是最后一页,尝试翻页 if page < pages: if not self._go_to_next_page(): logger.warning("无法翻页,停止爬取") break # 随机延迟避免被封 time.sleep(random.uniform(3, 7)) return True except Exception as e: logger.error(f"搜索商品失败: {str(e)}") return False def _go_to_next_page(self): """翻页到下一页""" try: # 尝试多种翻页方式 next_selectors = [ ".next-btn.next-next", # 淘宝的下一页按钮 ".next-btn", "button[aria-label*='下一页']", ".next-btn[aria-label*='下一页']" ] for selector in next_selectors: try: next_btn = WebDriverWait(self.driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, selector)) ) self.driver.execute_script("arguments[0].click();", next_btn) # 等待新页面加载 WebDriverWait(self.driver, 15).until( EC.presence_of_element_located((By.CSS_SELECTOR, ".CardV2--doubleCard--_OJ1T8j")) ) logger.info("成功翻页到下一页") return True except: continue return False except Exception as e: logger.error(f"翻页失败: {str(e)}") return False def _scrape_current_page(self): """爬取当前页面的商品数据 - 改进版""" try: # 使用实际的选择器 WebDriverWait(self.driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, ".CardV2--doubleCard--_OJ1T8j")) ) # 获取商品元素 items = self.driver.find_elements(By.CSS_SELECTOR, ".CardV2--doubleCard--_OJ1T8j") if not items: # 备用选择器 items = self.driver.find_elements(By.CSS_SELECTOR, ".CardV2--mainPicAndDesc--Eb_BxDU") logger.info(f"找到 {len(items)} 个商品") successful_count = 0 for index, item in enumerate(items): try: # 滚动到元素位置 self.driver.execute_script("arguments[0].scrollIntoView({block: 'center'});", item) time.sleep(0.5) product_data = self._extract_product_data(item) if product_data: self.products_data.append(product_data) successful_count += 1 logger.info(f"成功提取商品 {successful_count}: {product_data['title'][:20]}...") # 每5个商品休息一下 if (index + 1) % 5 == 0: time.sleep(random.uniform(1, 3)) except Exception as e: logger.error(f"提取第{index + 1}个商品失败: {str(e)}") continue logger.info(f"当前页面爬取完成,成功获取 {successful_count}/{len(items)} 个商品") except Exception as e: logger.error(f"爬取当前页面失败: {str(e)}") def _extract_product_data(self, item): """从商品元素中提取数据 - 改进版""" try: # 提取基本信息 - 使用实际的选择器 title = self._safe_find_text(item, ".Title--title--wJY8TeA span") # 提取价格(需要组合整数和小数) price_int = self._safe_find_text(item, ".Price--priceInt--BXYeCOI") price_float = self._safe_find_text(item, ".Price--priceFloat--rI_BYho") price = f"{price_int}{price_float}" if price_int else "未知" # 提取销量信息 sales = self._safe_find_text(item, ".Price--realSales--wnhaqVr") # 提取店铺信息 shop_name = self._safe_find_text(item, ".ShopInfo--shopNameText--kxQC2cC") # 提取发货地 location = self._safe_find_text(item, ".Price--procity--Na1DQVe") # 提取商品链接 try: link_element = item.find_element(By.CSS_SELECTOR, ".Title--title--wJY8TeA a") product_url = link_element.get_attribute("href") except: product_url = "" # 构建商品数据 product_data = { "title": title or "未知", "price": price or "未知", "shop_name": shop_name or "未知", "sales": sales or "0", "location": location or "未知", "url": product_url, "crawl_time": time.strftime("%Y-%m-%d %H:%M:%S") } return product_data except Exception as e: logger.error(f"提取商品数据失败: {str(e)}") return None def _safe_find_text(self, parent, selector): """安全查找元素文本""" try: element = parent.find_element(By.CSS_SELECTOR, selector) return element.text.strip() except: return "" def save_to_csv(self, filename="taobao_products.csv"): """将爬取的数据保存为CSV文件""" if not self.products_data: logger.warning("没有数据可保存") return False try: df = pd.DataFrame(self.products_data) df.to_csv(filename, index=False, encoding='utf-8-sig') logger.info(f"数据已保存到 {filename},共 {len(self.products_data)} 条记录") return True except Exception as e: logger.error(f"保存CSV失败: {str(e)}") return False def save_to_json(self, filename="taobao_products.json"): """将爬取的数据保存为JSON文件""" if not self.products_data: logger.warning("没有数据可保存") return False try: with open(filename, 'w', encoding='utf-8') as f: json.dump(self.products_data, f, ensure_ascii=False, indent=4) logger.info(f"数据已保存到 {filename},共 {len(self.products_data)} 条记录") return True except Exception as e: logger.error(f"保存JSON失败: {str(e)}") return False def get_statistics(self): """获取爬取统计信息""" if not self.products_data: return "没有数据" total = len(self.products_data) shops = len(set(item['shop_name'] for item in self.products_data)) return f"总计: {total} 个商品, {shops} 个店铺" def close(self): """关闭浏览器""" if hasattr(self, 'driver') and self.driver: self.driver.quit() logger.info("浏览器已关闭") def __del__(self): """析构函数,确保浏览器被关闭""" self.close() # 使用示例 if __name__ == "__main__": crawler = TaobaoCrawler() try: # 搜索商品,按销量排序 crawler.search_products("女装", pages=60, sort_by="sale-desc") # 保存数据 crawler.save_to_csv("taobao_products.csv") crawler.save_to_json("taobao_products.json") # 打印统计信息 print(crawler.get_statistics()) finally: crawler.close() ``` ### 总结 主要修改点在于将 `webdriver.Chrome` 替换为 `webdriver.Edge`,并将 `ChromeOptions` 替换为 `EdgeOptions`。同时,确保 Edge 浏览器驱动已正确配置。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值