python实战笔记之(3):Selenium模拟浏览器抓取淘宝商品美食信息

本文介绍了如何使用Python的Selenium库配合Chrome/PhantomJS模拟浏览器操作,抓取淘宝美食商品信息。通过Selenium搜索关键词、分析翻页、提取商品内容,并将数据存储到MongoDB。由于Selenium不再支持PhantomJS,文章更新推荐使用无头版本的Chrome。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

淘宝的请求页面是非常复杂的,含有各种请求参数或加密参数,如果直接请求或是分析Ajax将会非常繁琐。Selenium是一个自动化测试工具,它可以驱动浏览器去完成各种操作,比如模拟点击、输入、下拉等各种功能,这样我们就只需要关心操作而不需要关心后台的具体请求过程。本文使用Selenium+Chrome/PhantomJS对淘宝美食信息进行抓取,并存储到MongoDB,使用的解析库是PyQuery。

(1)目标站点分析

首先我们分析一下淘宝站点,打开https://www.taobao.com/,在搜索框输入关键词“美食”,接着进行元素审查,分析原始请求的Response。可以看到,返回结果里有很多js,一些导航内容和css,没有任何的商品信息,其它的请求也比较复杂,包含了很多参数,原始请求的参数也比较多,并且一些参数我们很难直接看出来它的作用:

面对一个如此复杂的局面,我们很难通过分析Ajax请求得到想要的信息,所以选用Selenium实现。

(2)流程框架

1.搜索关键字

利用Selenium驱动浏览器搜索关键字,得到查询后的商品列表。

2.分析页码并翻页

得到商品页码数,模拟翻页,得到后续页面的商品列表。

3.分析提取商品内容

利用PyQuery分析源码,解析得到商品列表。

4.存储到MongoDB

将商品列表信息存储到数据库MongoDB。

(3)爬虫代码

# TB_meishi.py

import re
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from pyquery import PyQuery as pq
from TB_meishi_config import *
import pymongo

client = pymongo.MongoClient(MONGO_URL, connect=False)
db = client[MONGO_DB]

browser = webdriver.Chrome()
wait = WebDriverWait(browser, 10)


def search():
	try:
		browser.get('https://www.taobao.com')
		input = wait.until(
			EC.presence_of_element_located((By.CSS_SELECTOR, "#q"))  # 等待元素出现,CSS选择器
		)
		submit = wait.until(
			EC.element_to_be_cli
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值