用selenium爬取淘宝美食

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 这里用淘宝来练习一下 selenium 的使用,可以替换关键字,爬取不同的物品,比如说衣服、鞋子之类的。from selenium import webdriverfrom selenium.

这里用淘宝来练习一下 selenium 的使用,可以替换关键字,爬取不同的物品,比如说衣服、鞋子之类的。


from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from pyquery import PyQuery as pq
import re,pymongo

borwser = webdriver.Chrome()#声明浏览器
url = 'https://www.taobao.com/'
wait = WebDriverWait(borwser,10)#显示等待
key_word = '美食'
def search(key_word):
    try:
        borwser.get(url)
        input = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#q')))
        submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'#J_TSearchForm>div.search-button>button')))
        input.send_keys(key_word)
        submit.click()
        total = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#mainsrp-pager>div>div>div>div.total')))
        get_products()
        return total.text
    except TimeoutError:
        return search(key_word)

这一部分主要是一些配置的信息,打开淘宝,找到输入框,然后输入关键字确定,如果在规定的时间内没有响应,可能是网速太慢,我们用了递归调用再次执行代码就好了。

def next_page(number):
    #处理翻页的操作
    #页面最下方翻页地方输入页码的框出来没有
    input = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#mainsrp-pager>div>div>div>div.form>input')))
    ##判断输入框后面的确定按钮出来没有
    submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#mainsrp-pager>div>div>div>div.form>span.btn.J_Submit')))
    input.clear()#先清理一下输入框里的页码数字
    input.send_keys(number)#填入翻页数字
    submit.click()#点击确定
    #判断是否翻页成功
    wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR,'#mainsrp-pager>div > div > div > ul > li.item.active > span'),str(number)))
    get_products()

这一部分是处理翻页的,代码注释已经很详细了,不再过多啰嗦。

def get_products():
    #解析详情列表
    wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#mainsrp-itemlist .items .item')))#看看页面加载出来没有
    html = borwser.page_source#得到网页的源代码
    doc = pq(html)#用pq解析网页源代码
    #得到所有选中的内容
    items = doc('#mainsrp-itemlist .items .item').items()
    for item in items:
        products = {
            'image': item.find('.pic .img').attr('data-src'),
            'price': item.find('.price').text()[3:],
            'deal': item.find('.deal-cnt').text(),
            'title': item.find('.title').text(),
            'shop': item.find('.shop').text(),
            'location': item.find('.location').text()
        }
        print(products)
        save_products(products)

这里是解析页面美食部分的代码,当然你的关键字是什么就解析什么,这里用到了 pyquery 这个库,你也可以使用其他的解析方法,比如说 xpath 、re 、bs4 等等

MONGO_URL = 'localhost'#本地数据库
MONGO_DB = 'taobaomeishi'#数据库名称
MONGO_TABLE = 'products'
client = pymongo.MongoClient(MONGO_URL)
db = client[MONGO_DB]

def save_products(result):
    try:
        if db[MONGO_TABLE].insert(result):
            print('保存MONGODB成功',result)
    except Exception:
        print('保存到MONGODB失败',result)



if __name__ == '__main__':
    total = search(key_word)
    total = int(re.findall('(\d+)',total)[0])
    for i in range(2,5):
        next_page(i)

觉得不错点个赞吧。

目录
相关文章
|
6月前
|
Web App开发 前端开发 IDE
Airtest-Selenium实操小课①:爬取新榜数据
Airtest-Selenium实操小课①:爬取新榜数据
|
JavaScript 大数据 应用服务中间件
Python网络爬虫(JSON, Phantomjs, selenium/Chromedirver,豆瓣电影、斗鱼直播、京东商城爬取)
python、python爬虫、网络爬虫、爬虫框架、selenium、requests、urllib、数据分析、大数据、爬虫爬取静态网页、爬虫基础、自动化测试、json、动态加载、反爬虫
3529 0
|
6月前
|
Web App开发 数据采集 前端开发
Python Selenium 爬虫淘宝案例
本文基于Selenium + MongoDB + ChromeDriver + Pyquery实现爬虫淘宝案例。【2月更文挑战第11天】
298 1
Python Selenium 爬虫淘宝案例
|
XML 数据采集 JSON
scrapy_selenium爬取Ajax、JSON、XML网页:豆瓣电影
在网络爬虫的开发过程中,我们经常会遇到一些动态加载的网页,它们的数据不是直接嵌入在HTML中,而是通过Ajax、JSON、XML等方式异步获取的。这些网页对于传统的scrapy爬虫来说,是很难直接解析的。那么,我们该如何使用scrapy_selenium来爬取这些数据格式的网页呢?本文将为你介绍scrapy_selenium的基本原理和使用方法,并给出一个实际的案例。
109 0
|
6月前
|
Web App开发 IDE 测试技术
实战练习:用airtest-selenium脚本爬取百度热搜标题
实战练习:用airtest-selenium脚本爬取百度热搜标题
129 0
|
Web App开发 数据采集 存储
如何使用Selenium Python爬取动态表格中的多语言和编码格式
Selenium是一个用于自动化Web浏览器的工具,它可以模拟用户的操作,如点击、输入、滚动等。Selenium也可以用于爬取网页中的数据,特别是对于那些动态生成的内容,如表格、图表、下拉菜单等。本文将介绍如何使用Selenium Python爬取一个动态表格中的多语言和编码格式的数据,并将其保存为CSV文件。
196 0
如何使用Selenium Python爬取动态表格中的多语言和编码格式
|
数据采集 存储 Web App开发
如何使用Selenium Python爬取动态表格中的复杂元素和交互操作
Selenium是一个自动化测试工具,可以模拟浏览器的行为,如打开网页,点击链接,输入文本等。Selenium也可以用于爬取网页中的数据,特别是那些动态生成的数据,如表格,图表,下拉菜单等。本文将介绍如何使用Selenium Python爬取动态表格中的复杂元素和交互操作。
344 0
如何使用Selenium Python爬取动态表格中的复杂元素和交互操作
|
数据采集 JavaScript 测试技术
Python爬虫通过selenium自动化抓取淘宝的商品数据
淘宝的页面大量使用了js加载数据,所以采用selenium来进行爬取更为简单,selenum作为一个测试工具,主要配合无窗口浏览器phantomjs来使用。
828 0
|
数据采集 存储 Web App开发
如何使用Selenium Python爬取多个分页的动态表格并进行数据整合和分析
在网络爬虫的领域中,动态表格是一种常见的数据展示形式,它可以显示大量的结构化数据,并提供分页、排序、筛选等功能。动态表格的数据通常是通过JavaScript或Ajax动态加载的,这给爬虫带来了一定的挑战。本文将介绍如何使用Selenium Python这一强大的自动化测试工具来爬取多个分页的动态表格,并进行数据整合和分析。
367 0
|
数据采集 JSON API
Selenium封装根据ID获取淘宝商品详情数据
Selenium封装根据ID获取淘宝商品详情数据