文章目录

  • 前言
  • 一、前期准备
    • 1.安装浏览器插件
      • 1.下载插件
      • 2.配置环境变量
      • 3.复制到python文件夹一份
  • 二、使用步骤
    • 1.引入库selenium
    • 2.爬虫编写
  • 总结
    • qq群:530472483
    • 对Pyhon感兴趣的话可以添加下

前言

本篇文章仅供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 ECfrom 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-passworddriver.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('未发现滑块')passexcept:print('未发现滑块')finally:print('登录成功')def drop_down(self, driver):for x in range(1, 11, 2):time.sleep(0.5)j = x / 10js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % jdriver.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 sheetsheet = 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.webdriverdriver.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_listinfo_list = []price_list = []deal_list = []url_list = []name_list = []position_list = []username = '您的手机号'password = '浏览器登录的密码'Taobao().run(username, password)

总结

qq群:530472483

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

Python某宝数据爬取_一蓑烟雨任平生相关推荐

  1. 基于python的数据爬取与分析_基于Python的网站数据爬取与分析的技术实现策略

    欧阳元东 摘要:Python为网页数据爬取和数据分析提供了很多工具包.基于Python的BeautifulSoup可以快速高效地爬取网站数据,Pandas工具能方便灵活地清洗分析数据,调用Python ...

  2. 每日一练:Python国内疫情数据爬取与地图绘制

    Python 国内疫情数据爬取与地图绘制 效果图 累计确诊疫情地图绘制 ① 时时数据抓取 ② 获取省份疫情数据 ③ 视觉配置项分段颜色数据设置 ④ 累计确诊疫情地图绘制 现存确诊疫情地图绘制 ① 获取 ...

  3. Python爬虫——Ajax数据爬取

    前言 有时候我们在用requests抓取页面的时候,得到的结果可能和在浏览器中看到的不一样,在浏览器中可以看到正常显示的页面数据,但使用requests得到的结果并没有.这是因为在requests获得 ...

  4. python爬虫之数据爬取项目实例

    python爬虫之数据爬取项目实例 一.scrapy数据爬取 (一)前期准备 (二)目标: (三)步骤: 1.创建项目: 2.创建爬虫: 3.打开项目: 4.创建启动程序: 5.编写爬虫: 6.启动测 ...

  5. 使用python进行股票数据爬取中的时间限制和策略

    股票数据爬取中的时间限制和策略 在进行股票数据爬取时,时间限制和策略是非常重要的考虑因素.本文将介绍两个与此相关的函数:is_trade_day()和stock_work_day(). is_trad ...

  6. python数据分析图表展示_NBA数据分析_python数据爬取_可视化图形_python数据可视化案例-帆软...

    之前手痒做了一次NBA可视化分析,发个微头条,好多人追着我问教程,这两天终于闲下来了,花时间整理这篇NBA可视化分析教程,手把手教大家做一次炫酷的数据可视化分析! 先部分展示本次教程的作品: 数据获取 ...

  7. python获取网页数据对电脑性能_【Python】网页数据爬取实战

    由于网页结构跟之前有变化,还不是很熟悉.代码待完善,问题记录: 腾讯新闻二级网页内容爬取有问题. 链家网站头文件没有用到. 爬取一条腾讯视频的header内容,存入txt.要求: 包含网页链接 包含t ...

  8. Python爬虫之淘宝数据爬取(商品名称,价格,图片,销量)

    代码详细注释,仅供交流与参考,不作商业用途 代码参考北京理工大学嵩天老师 import requests #导入第三方库 import re import osdef getHTMLText(url) ...

  9. python汽车用户消费投诉数据爬取_爬虫案例:汽车用户消费投诉数据爬取

    任务:爬取某公开网站上的汽车用户消费投诉数据('http://tousu.315che.com/tousulist/serial/55467/'),字段包含品牌.投诉内容.品牌车型.单号.投诉问题.投 ...

最新文章

  1. hdu 4268 Alice and Bob(STL版)
  2. java安卓的xml布局,android – 将xml布局更改为java代码
  3. fitbit手表中文说明书_如何获取和分析Fitbit睡眠分数
  4. React之回调函数形式的ref
  5. android 呼吸灯权限_小米新机搭载炫彩呼吸灯酷到爆;三星顶级旗舰Note 10正式官宣...
  6. 引入神经网络 API 1.1、支持全面屏,Android 9.0 来了!
  7. Node.js 4.0 中的 ES 6 特性介绍
  8. js requestAnimationFrame
  9. wsdl2java生成服务端_根据wsdl,apache cxf的wsdl2java工具生成客户端、服务端代码
  10. [附源码]java毕业设计卡通动漫商城系统
  11. 对路径“C:\inetpub\wwwroot\Test\Temper\”的访问被拒绝 【已解决】
  12. 爬虫实战——求是网周刊文章爬取
  13. 远程诊断DoIP(笔记二)概念
  14. 个人创新和团队创新 高效和创新
  15. 芜湖职业学院计算机系分数线,芜湖职业技术学院录取分数线2021是多少分(附历年录取分数线)...
  16. STM32F103C8T6的内部Flash以及实例
  17. UT2014学习笔记
  18. 什么是android
  19. OpenCV系列之理解特征 | 三十六
  20. Linux进程管理ps

热门文章

  1. python制作简单动漫_Blender 2.9简单卡通角色完整制作训练视频教程
  2. 【1691. 堆叠长方体的最大高度】
  3. 泰克示波器控件接线图的重要性
  4. paip.enhes efis 自动获取文件的中文编码
  5. Spark-SQL性能极致优化: Native Codegen Framework
  6. python实战:利用chrome抓包插件HTTP间谍分析有道翻译反爬机制
  7. MySQL常用命令总结(四)
  8. 【小墩墩学Android】三国人物列传(二)
  9. 一个人的号码——霜雪盈天
  10. ​智能电子压力开关的构成