Python某宝数据爬取_一蓑烟雨任平生

超详细python实现爬取淘宝商品信息(标题、销量、地区、店铺等) 要搜索的商品的关键词KEYWORD = '衣服'# 数据库中要插入的表# MySQL 数据库连接配置,根据自己的本地数据库修改# 创建 MySQL 连接对象# 关闭自动测试状态显示 // 会导致浏览器报:请停用开发者模式# 把chrome设为selenium驱动的浏览器代理;# 窗口最大化# wait是Selenium中的一个等待类,用于在特定条件满足之前等待一定的时间(这里是15秒)。# 如果一直到等待时间都没满足则会捕获TimeoutException异常。 阅读详情


前言

本篇文章仅供Python学习,禁止商业用途,其中需要优化的地方很多,比如爬取页数,又比如按条件排序爬取,想拿走就拿走,毕竟得不到什么,这里对自己的成果做一下记录,仅此而已


一、前期准备

1.安装浏览器插件

1.下载插件

这是谷歌的,可以自行百度火狐什么的

2.配置环境变量

放入谷歌的根目录下,然后配置环境变量

3.复制到python文件夹一份

二、使用步骤

1.引入库selenium

from selenium import webdriver
import time
import xlwt
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.support.wait import WebDriverWait

2.爬虫编写

class Taobao:
    def __init__(self):
        self.url = 'http://www.taobao.com'
        self.savepath = "淘宝数据.xls"  # 定义保存路径
        self.book = xlwt.Workbook(encoding="utf-8", style_compression=0)  # 创建workbook对象

    def do_slider(self, wait, driver):
        """
        处理滑动验证码
        :return:
        """
        slider_go = wait.until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '#nc_1_n1z'))
        )
        # 实例化一个动作链关联游览器
        action = ActionChains(driver)
        action.reset_actions()
        # 使用鼠标动作链进行点击并悬浮
        action.click_and_hold(slider_go)
        # 滑动验证码
        action.move_by_offset(xoffset=258, yoffset=0).perform()
        time.sleep(1)

    def search_product(self, username, password, keyword, driver, wait):
        # 输入关键字
        driver.find_element_by_id('q').send_keys(keyword)
        time.sleep(2)
        # 搜索fm-login-id fm-login-password
        driver.find_element_by_class_name('btn-search').click()
        time.sleep(2)
        # 输入账号密码
        input_username = wait.until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '#fm-login-id'))
        )
        input_password = wait.until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '#fm-login-password'))
        )
        submit = wait.until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, '#login-form > div.fm-btn > button'))
        )
        input_username.send_keys(username)
        time.sleep(2)
        input_password.send_keys(password)
        time.sleep(2)
        submit.click()
        # 点击二维码出现
        # driver.find_element_by_css_selector('.iconfont.icon-qrcode').click()
        # driver.find_element_by_css_selector('[type=submit]').click()
        # time.sleep(10)
        # 判断有无滑块验证
        try:
            slider = wait.until(
                EC.presence_of_element_located((By.CSS_SELECTOR, '#nc_1__scale_text > span'))
            )
            if bool(slider):
                print('发现滑块验证码')
                time.sleep(2)
                self.do_slider(wait, driver)
                submit.click()
            else:
                print('未发现滑块')
                pass
        except:
            print('未发现滑块')
        finally:
            print('登录成功')

    def drop_down(self, driver):
        for x in range(1, 11, 2):
            time.sleep(0.5)
            j = x / 10
            js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
            driver.execute_script(js)

    def get_product(self, driver):
        lis = driver.find_elements_by_xpath('//div[@class="items"]/div[@class="item J_MouserOnverReq  "]')
        for li in lis:
            info_list.append(li.find_element_by_xpath('.//div[@class="row row-2 title"]').text)
            price_list.append(li.find_element_by_xpath('.//a[@class="J_ClickStat"]').get_attribute('trace-price'))
            deal_list.append(li.find_element_by_xpath('.//div[@class="deal-cnt"]').text)
            url_list.append(li.find_element_by_xpath('.//div[@class="pic"]/a/img').get_attribute('src'))
            name_list.append(li.find_element_by_xpath('.//div[@class="shop"]/a/span[2]').text)
            position_list.append(
                li.find_element_by_xpath('.//div[@class="row row-3 g-clearfix"]/div[@class="location"]').text)

    def saveDate(self, all_list):
        col = ("商品标题", "商品价格", "商品销量", "商品链接", "店铺名称", "商品发货地")
        for i2 in range(0, 5):
            sheet.write(0, i2, col[i2])  # 列名
        for i3 in range(0, len(all_list[0])):
            b = (all_list[0])[i3]
            c = (all_list[1])[i3]
            d = (all_list[2])[i3]
            e = (all_list[3])[i3]
            f = (all_list[4])[i3]
            g = (all_list[5])[i3]

            sheet.write((i3 + 1), 0, b)
            sheet.write((i3 + 1), 1, c)
            sheet.write((i3 + 1), 2, d)
            sheet.write((i3 + 1), 3, e)
            sheet.write((i3 + 1), 4, f)
            sheet.write((i3 + 1), 5, g)

        self.book.save(self.savepath)

    def run(self, username, password):
        global sheet
        sheet = self.book.add_sheet('淘宝数据', cell_overwrite_ok=True)  # 创建工作表
        keyword = input('请输入淘宝关键字:')
        options = webdriver.ChromeOptions()
        # options.add_argument("--headless")  # 设置谷歌为headless无界面模式
        driver = webdriver.Chrome(options=options)
        # 防止被监测,完美隐藏window.navigator.webdriver
        driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
            "source": '''
                    Object.defineProperty(navigator, 'webdriver', {
                      get: () => undefined
                    })
                  '''
        })
        wait = WebDriverWait(driver, 5)
        driver.get(self.url)
        self.search_product(username, password, keyword, driver, wait)
        self.drop_down(driver)
        self.get_product(driver)
        for num in range(1, 5):
            driver.get('https://s.taobao.com/search?q={}&s={}'.format(keyword, 44 * num))
            print('https://s.taobao.com/search?q={}&s={}'.format(keyword, 44 * num))
            driver.implicitly_wait(10)
            self.drop_down(driver)
            self.get_product(driver)
        driver.close()
        all_list = [info_list, price_list, deal_list, url_list, name_list, position_list]
        # 存储表格
        self.saveDate(all_list)


if __name__ == '__main__':
    global info_list, price_list, deal_list, url_list, name_list, position_list
    info_list = []
    price_list = []
    deal_list = []
    url_list = []
    name_list = []
    position_list = []
    username = '您的手机号'
    password = '浏览器登录的密码'
    Taobao().run(username, password)

总结

在这里插入图片描述

qq群:530472483

对Pyhon感兴趣的话可以添加下

惠农网_破译反爬虫_使用代理IP爬取数据(源码)_一蓑烟雨任平生 费话不多说直接上代码 今天要倒霉的网站是www.cnhnb.com import requests from bs4 import BeautifulSoup # 用来解析网页 import uuid import pymysql import time # 导入时间隔 import random from fake_useragent import UserAgent cookk = { 'Cookie': 'sessionId=S_0KHA8RH66NM124OL; Hm_lvt_91cf 阅读详情

相关推荐

yys-cbg-bench:阴阳师藏宝阁衍生小工具,用于提取游戏帐号数据要点并生成报告

号来 衍生小工具,用于提取游戏帐号要点并生成图文报告。 其实,用处不大,藏宝阁官网展示的数据不足深挖,无非是算算一速啥的。 例: 商品页面: 生成报告: | 「号来」同时发布到 NGA 论坛阴阳师板块,可回复交流: 依赖 「号来」使用 Python3 编写,依赖的第三方库: pip install pillow 文档 python cbg_bench.py -h + 选项: -h, --help 帮助 -v, --version 程序版本 -l, --lite 输出结果精简化(未指定则输出完整结果) -u, --url 藏宝阁商品详情链接 + 若未指定 -u, 程序会读取未知参数, 若也无未知参数, 不启动程序 + 不带任何参数也可启动程序, 会有参数输入引导 输出结果: {上架中/已售出/已取回/未上架}: ¥{售价,公示期/已取回状态将提示“

Python爬虫实战之爬淘宝商品并做数据分析

Python爬虫实战之爬淘宝商品并做数据分析

Java癫疯的博客 3328

爬取淘宝店铺商品销量,规格等参数及可视化

爬取淘宝某个店铺的商品信息,并根据商品销量,用商品图片做矩阵树图

从登陆到爬取:Python反反爬获取某宝成千上万条公开商业数据

不知从何时起,开始享受上了爬取成千上万条数据的感觉! 本文将运用Python反反爬技术讲解如何获取某宝成千上万条公开商业数据。 1 前期准备 Python环境:Python 3.8.2 Python编译器:JetBrains PyCharm 2018.1.2 x64 第三方库及模块:selenium、time、csv、re 此外,还需要一个浏览器驱动器:webDriver 其中,selenium是一个第三方库,需要另外安装,就在终端输入下述命令行即可 pip install se..

闭关修炼——暂退 1847

别再到处找模板了!我用这套软著申请材料(含用户手册+源代码模板)两个月搞定

本文提供了一套高效的软著申请材料模板,包括用户手册和源代码模板,帮助开发者两个月内快速完成申请。通过实战指南和常见误区解析,详细介绍了材料准备的规范与技巧,确保格式合规性,大幅提升审核通过率。

weixin_29268637的博客 548

Python广度优先搜索BFS - 蓝桥13届省赛污染海域

请问这片N * M海域中有几块是没被污染的独立海域(没被污染的独立海域是指该块海域上下左右被已污染的海域包围,且N * M以外的海域都为已被污染的海域)有一片海域划分为N * M个方格,其中有些海域已被污染(用0表示),有些海域没被污染(用1表示)。第二行开始输入N行,每行M个数字(数字只能为1或者0,1表示没被污染的海域,0表示已被污染的海域)这块4 * 5的海域,有3块海域(绿色)没被污染,因为每一块的上下左右都被污染的海域包围。输出一个整数,表示N * M的海域中有几块是没被污染的独立海域。

m0_69865359的博客 264

phantomjs 抓天下三藏宝阁数据

var page = require('webpage').create(); page.viewportSize = {width: 1200,height: 1500}; page.settings.userAgent='Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:48.0) Gecko/20100101 Firefox/48.0'; var webSi...

用简单话理解复杂事 3038

主流双目相机技术参数横向评测:从ZED到国产新锐

本文对主流双目相机技术参数进行了横向评测,涵盖ZED、Bumblebee等国际品牌及国产新锐产品。详细分析了分辨率、帧率、视场角等关键参数,并针对机器人导航、AR/VR交互、工业检测等场景提供选型建议。特别推荐ZED相机在科研领域的成熟应用,以及国产方案在长基线设计和主动双目技术上的创新突破。

weixin_33670786的博客 317

Python文件运行说明书以及解决的过程_一蓑烟雨任平生

文章目录前言一、安装Python环境1-安装Python解析器2-安装所需要的包第一步:第二步二、运行Python文件1.修改数据库连接2.舆情和特色添加定时器方法如下第一:第二:3.供需和价格价格遇到的难点1价格遇到的难点24.文章爬取总结 前言 这篇文章主要是讲解下,爬虫爬取数据的使用方法,针对于有点点电脑基础的人,比如说会开机,会使用鼠标,会打字这些基本方法 一、安装Python环境 1-安装Python解析器 如果你的电脑没有Python环境,是无法运行脚本的,这里有下载好的Python解释器,

Jaeger_Java的博客 761

dify离线部署

以bge-m3为例,本地部署bge-m3首先在一台能连网的linux服务器上(部署有ollama)创建想要保存模型的文件夹编辑ollama.service,配置ollama模型的保存路径添加模型存储地址将models目录设置属主,必须做,否则ollama无法启动重新加载配置文件并重启ollama测试ollama 运行是否正常最后拉取 bge-m3可在/opt/LLMModels/bge_m3/models目录下看到拉取得模型使用tar命令压缩文件夹。

weixin_42538734的博客 3065

电机控制框架选型指南:从TI MotorWare到ST MC SDK,5种架构优缺点对比

本文深入对比了TI MotorWare、ST MC SDK、AUTOSAR、FPGA+ARM及集成方案等五种主流电机控制软件框架的架构特点、实时性、开发效率与硬件兼容性。通过工业伺服和消费电子的实战案例分析,为工程师提供了清晰的选型逻辑与决策清单,旨在帮助规避技术债务,选择最适合项目需求的电机控制框架。

rnn9storyteller的博客 1172

爬虫爬取LOL和TiMi,文章最后有福利,已打包EXE文件_一蓑烟雨任平生

import os import requests url = 'https://pvp.qq.com/web201605/js/herolist.json' response = requests.get(url) heroList_json = response.json() hero_dir = 'wangzhe' if not os.path.exists(hero_dir): os.mkdir(hero_dir) # 创建存储的文件,判断是否存在,不存在就创建,自己可以更改 for m

Jaeger_Java的博客 503

如何理解S参数的三大特性

提到S参数的时候经常会涉及一些概念,如无源性、因果性、互易性等,本文逐一介绍这些特性的概念、成因以及判断方式。

一只豌豆象的博客 4495

惠农网_爬取二级网页内容(源码)_一蓑烟雨任平生

废话不多说,直接上代码 今天倒霉的网站是惠农网供应大厅 import requests import pymysql from bs4 import BeautifulSoup # 用来解析网页 from fake_useragent import UserAgent import uuid import time cookk = { 'Cookie': 'sessionId=S_0KHA8RH66NM124OL; Hm_lvt_91cf34f62b9bedb16460ca36cf192f4c=

Jaeger_Java的博客 2022

支付域——账户系统设计

本文详细介绍了支付域中的账户系统设计,包括账户的定义、核心特征、常见类型以及在支付系统中的作用。账户是支付平台为用户、商户等主体建立的资金记录单元,具有资金归属、余额管理、交易流水、资金安全等核心特征。常见账户类型包括用户账户、商户账户、平台账户、保证金账户等。此外,还探讨了账户与银行账户的区别、账户的结构设计、如何设计账户类型以及账户系统设计等内容。

庄小焱 1186

【SpringBoot笔记44】SpringBoot多数据源配置(方式一:配置多个mapper扫描不同的包路径实现多数据源配置)

在SpringBoot应用开发中,一般情况下,都是只会配置一个数据源信息,之后整个工程都是对当前数据源进行增删改查的操作。但是,在实际开发里面,也有可能会遇到多数据源的情况,例如:当前工程中除了需要访问自己应用的数据库,还需要直接连接第三方系统的数据库进行业务处理,这种情况下,就需要进行多数据源的配置。SpringBoot考虑到了这一点,所以它是支持多数据源的配置的,下面介绍一下如何配置多数据源。

✅ Java 开发工程师 1115

中国农业信息网_爬取新闻详情(源码)_一蓑烟雨任平生

废话不多说直接上代码 今天要倒霉的网站是全国农业信息网 import requests import pymysql from bs4 import BeautifulSoup # 用来解析网页 import uuid import time url = "http://www.agri.cn/V20/ZX/qgxxlb_1" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KH

Jaeger_Java的博客 1498

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Python爬虫使用Oracle数据库,cx_Oracle安装问题汇总——一蓑烟雨任平生

前几天写了一个爬虫,爬取网站信息,一开始用的MySQL,存库成功,本地测试完美没问题,然后项目经理说用Oracle,我说没问题,都差不多,然后本地一顿调试,成功了(因为之前写过数据库用Oracle的脚本)但是当时那个cx_Oracle错误记忆犹新,下载了各种版本才解决,当时没深度思考就过了,今天报应就来了,当服务器上部署执行爬虫脚本之后那个我不想面对的问题出现了,问题如下 OK,没引入包,第一反应就是引入包呗 pip install cx_Oracle 本以为引包之后程序就可以正常运行了,结果出现新的问

Jaeger_Java的博客 781

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

农机资讯网_数据爬取(源码)_一蓑烟雨任平生

废话不多说,直接上代码 今天要倒霉的网站是农机资讯网 # -*- coding: utf-8 -*- import requests import pymysql from bs4 import BeautifulSoup # 用来解析网页 import uuid import time url = "http://news.nongji360.com" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleW

Jaeger_Java的博客 496

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Python 小白上手的简单爬虫——肯德基——一蓑烟雨任平生

老规矩,直接上代码 # -*- coding: utf-8 -*- """ @Time : 2021/1/22 10:46 @Auth : 张张呀 @File :肯德基.py @IDE :PyCharm @Motto:ABC(Always Be Coding) """ from tkinter import Tk, messagebox import easygui import requests top = Tk() top.withdraw() class kendeji: def _

Jaeger_Java的博客 492

Python 抓取豆瓣电影放入表格中__一蓑烟雨任平生

# -*- coding: utf-8 -*- """ @Time : 2021/1/19 14:14 @Auth : 张张呀 @File :laoshi.py @IDE :PyCharm @Motto:ABC(Always Be Coding) """ import xlwt import requests # 储存到excel表格中 def saveDate(sheet, all_list, book, savepath, page): col = ("ID", "标题", "封面图片地址"

Jaeger_Java的博客 460

中国农网_数据抓取(源码)_一蓑烟雨任平生

废话不多说,直接上代码 今天要倒霉的网站是中国农网 import requests # 用来请求网址 import pymysql # 用来存数据库 from fake_useragent import UserAgent from bs4 import BeautifulSoup # 用来解析网页 import time # 中国农网 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/53

Jaeger_Java的博客 560

爬虫万能模板之XPath_没有爬不到的数据只有想不到的网站_一蓑烟雨任平生

文章目录前言一、上模板代码二、讲解1.找到需要的网址2.找到Xpath的值怎么找?3.替换Xpath4.组装5.运行总结 前言 先上代码,就七八行代码,然后讲解怎么套模板 一、上模板代码 import requests from lxml import etree import time if __name__ == '__main__': headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) A

Jaeger_Java的博客 542

爬虫抓取51Job职位_生成表格(找工作的看过来)_一蓑烟雨任平生

文章目录前言源码如下:看下效果:总结 前言 没啥好说的直接上源码吧 源码如下: import easygui import requests import re import xlwt from urllib import parse from tkinter import messagebox from tkinter import * # 主函数 def main(): top = Tk() top.withdraw() savepath = "51.xls" # 定义保

Jaeger_Java的博客 571

农业科学院搜索引擎_json数据爬取(源码)_一蓑烟雨任平生

废话不多说,直接上代码 今天要倒霉的网站是农业科学院搜索引擎 # -*- coding: utf-8 -*- import requests import pymysql from bs4 import BeautifulSoup # 用来解析网页 import uuid import time headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko

Jaeger_Java的博客 307

农业图谱网_分类-列表-详情三级爬取(源码)_一蓑烟雨任平生

思路很简单就是先分类,爬取分类的数据,然后根据分类数据爬取每个种类下的列表数据,然后根据列表数据一个一个爬取详情数据 废话不多说,直接上代码 今天要倒霉的网站是农业图谱网 # -*- coding: utf-8 -*- import requests import pymysql from bs4 import BeautifulSoup # 用来解析网页 import uuid import time headers = { 'User-Agent': 'Mozilla/5.0 (Windows

Jaeger_Java的博客 510
上一篇: Python解决乱码万能方法以及一些个人思路_一蓑烟雨任平生
下一篇: Python两种获取cookie方法以及拼接cookie_一蓑烟雨任平生
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值