python爬虫——用selenium爬取淘宝商品信息

1.附上效果图


2.淘宝网址https://www.taobao.com/
3.先写好头部

browser = webdriver.Chrome()
wait = WebDriverWait(browser,20)#设置等待时间为20秒
url ='https://www.taobao.com/'
keyword = 'python爬虫'#关键词
data_list = []#设置全局变量来存储数据

4.先找到搜索框并用selenium模拟点击(发现需要登录,我直接扫码登录,没有写模拟登录的过程)

def search():try:browser.get(url)#获取网页input = wait.until(EC.presence_of_element_located((By.XPATH,'//*[@id="q"]')))#等到输入框加载出来button = wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="J_TSearchForm"]/div[1]/button')))#等到搜索框加载出来input.send_keys(keyword)#输入关键词button.click()#模拟鼠标点击total = wait.until(EC.presence_of_element_located((By.XPATH,'//*[@id="mainsrp-pager"]/div/div/div/div[1]'))).text#等到python爬虫页面的总页数加载出来total = re.sub(r',|,','',total)#发现总页数有逗号#数据清洗,将共100页后面的逗号去掉,淘宝里的是大写的逗号print(total)totalnum = int(re.compile('(\d+)').search(total).group(1))# 只取出100这个数字print("第1页:")get_data()#获取数据(下面才写到)return totalnumexcept TimeoutError:search()


5.获取商品信息,在这里我发现前几个会有淘宝的掌柜热卖的广告,属性和其他的不一样,我就用item从上往下数的第几个的方法找到他们

def get_data():try:lis = browser.find_elements_by_xpath('//div[@class = "items"]/div[@data-category="auctions"]')for i in range(len(lis)):name = browser.find_elements_by_xpath('.//div[@class="pic"]/a[@class="pic-link J_ClickStat J_ItemPicA"]/img')[i].get_attribute('alt')#获取书名,我是从图片那里的属性获取的书名,比较方便shopname = browser.find_elements_by_xpath('.//div[@class="shop"]/a[@class="shopname J_MouseEneterLeave J_ShopInfo"]/span[2]')[i].text#获取店铺名price = browser.find_elements_by_xpath('.//div[@class="price g_price g_price-highlight"]/strong')[i].text#获取价格paynum = browser.find_elements_by_xpath('.//div[@class="deal-cnt"]')[i].text#获取付款人数data_dict={}#定义一个字典存储数据data_dict["name"] = namedata_dict["shopname"] = shopnamedata_dict["price"] = pricedata_dict["paynum"] = paynumprint(data_dict)#输出这个字典data_list.append(data_dict)#将数据存入全局变量中except TimeoutError:get_data()



6.翻页方法,对比1,2,3页网址,发现只有q和s的属性有用,q是搜索,s是商品数,只需要填写这2个属性,用修改s的属性的方式翻页

def next_page():totalnum = search()#获取总页数的值,并且调用search获取第一页数据num = 1#初始为1,因为我第一页已经获取过数据了while num !=3:#这里我偷懒只爬取了3页# while num != totalnum - 1:#首先进来的是第1页,共100页,所以只需要翻页99次print("第%s页:" %str(num+1) )browser.get('https://s.taobao.com/search?q=python爬虫&s={}'.format(44 * num))#用修改s属性的方式翻页browser.implicitly_wait(10)#等待10秒get_data()#获取数据time.sleep(3)num +=1#自增

7.存储方法

def save():content = json.dumps(data_list, ensure_ascii=False, indent=2)# 把全局变量转化为json数据with open("taobao.json", "a+", encoding="utf-8") as f:f.write(content)print("json文件写入成功")with open('taobao.csv', 'w', encoding='utf-8', newline='') as f:# 表头title = data_list[0].keys()# 声明writerwriter = csv.DictWriter(f, title)# 写入表头writer.writeheader()# 批量写入数据writer.writerows(data_list)print('csv文件写入完成')

8.调用函数

def main():next_page()save()if __name__ == '__main__':main()

9.最后附上完整代码,因为爬取的是淘宝,我也不敢多爬

import time
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
import re
import json
import csvbrowser = webdriver.Chrome()
wait = WebDriverWait(browser,20)#设置等待时间为20秒
url ='https://www.taobao.com/'
keyword = 'python爬虫'#关键词
data_list = []#设置全局变量来存储数据def search():try:browser.get(url)#获取网页input = wait.until(EC.presence_of_element_located((By.XPATH,'//*[@id="q"]')))#等到输入框加载出来button = wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="J_TSearchForm"]/div[1]/button')))#等到搜索框加载出来input.send_keys(keyword)#输入关键词button.click()#模拟鼠标点击total = wait.until(EC.presence_of_element_located((By.XPATH,'//*[@id="mainsrp-pager"]/div/div/div/div[1]'))).text#等到python爬虫页面的总页数加载出来total = re.sub(r',|,','',total)#发现总页数有逗号#数据清洗,将共100页后面的逗号去掉,淘宝里的是大写的逗号print(total)totalnum = int(re.compile('(\d+)').search(total).group(1))# 只取出100这个数字print("第1页:")get_data()#获取数据(下面才写到)return totalnumexcept TimeoutError:search()def get_data():try:lis = browser.find_elements_by_xpath('//div[@class = "items"]/div[@data-category="auctions"]')for i in range(len(lis)):name = browser.find_elements_by_xpath('.//div[@class="pic"]/a[@class="pic-link J_ClickStat J_ItemPicA"]/img')[i].get_attribute('alt')#获取书名,我是从图片那里的属性获取的书名,比较方便shopname = browser.find_elements_by_xpath('.//div[@class="shop"]/a[@class="shopname J_MouseEneterLeave J_ShopInfo"]/span[2]')[i].text#获取店铺名price = browser.find_elements_by_xpath('.//div[@class="price g_price g_price-highlight"]/strong')[i].text#获取价格paynum = browser.find_elements_by_xpath('.//div[@class="deal-cnt"]')[i].text#获取付款人数data_dict={}#定义一个字典存储数据data_dict["name"] = namedata_dict["shopname"] = shopnamedata_dict["price"] = pricedata_dict["paynum"] = paynumprint(data_dict)#输出这个字典data_list.append(data_dict)#将数据存入全局变量中except TimeoutError:get_data()def next_page():totalnum = search()#获取总页数的值,并且调用search获取第一页数据num = 1#初始为1,因为我第一页已经获取过数据了while num !=3:#这里我偷懒只爬取了3页# while num != totalnum - 1:#首先进来的是第1页,共100页,所以只需要翻页99次print("第%s页:" %str(num+1) )browser.get('https://s.taobao.com/search?q=python爬虫&s={}'.format(44 * num))#用修改s属性的方式翻页browser.implicitly_wait(10)#等待10秒get_data()#获取数据time.sleep(3)num +=1#自增def save():content = json.dumps(data_list, ensure_ascii=False, indent=2)# 把全局变量转化为json数据with open("taobao.json", "a+", encoding="utf-8") as f:f.write(content)print("json文件写入成功")with open('taobao.csv', 'w', encoding='utf-8', newline='') as f:# 表头title = data_list[0].keys()# 声明writerwriter = csv.DictWriter(f, title)# 写入表头writer.writeheader()# 批量写入数据writer.writerows(data_list)print('csv文件写入完成')def main():next_page()save()if __name__ == '__main__':main()

python爬虫——用selenium爬取淘宝商品信息相关推荐

  1. 【python爬虫】selenium爬取淘宝商品图片

    一.说明 淘宝商品的爬取,主要用到selenium和css选择器,本案例难度较低可以用作selenium的入门. 注意:扫码登录是手动操作 二.代码演示 from selenium import we ...

  2. 利用Selenium爬取淘宝商品信息

    文章来源:公众号-智能化IT系统. 一.  Selenium和PhantomJS介绍 Selenium是一个用于Web应用程序测试的工具,Selenium直接运行在浏览器中,就像真正的用户在操作一样. ...

  3. 爬虫学习笔记——Selenium爬取淘宝商品信息并保存

    在使用selenium来模拟浏览器操作,抓取淘宝商品信息前,先完成一些准备工作. 准备工作:需要安装selenium,pyquery,以及Chrome浏览器并配置ChromeDriver. 安装sel ...

  4. 江湖小白之一起学Python (五)爬取淘宝商品信息

    趁热需打铁,随着这几天的鸡血澎湃,我们来实现一下爬取淘宝商品信息,我记得几年前曾用python写了下抓取淘宝天猫,京东,拍拍的爬虫,专门采集商品信息,图片,评论及评论图片,我还用pyqt开发了个客户端 ...

  5. python+selenium爬取淘宝商品信息+淘宝自动登录——爬虫实战

    1.前言 继续学习爬虫内容,这回是以selenium模拟操作进行抓取,其中有几个需要登陆的注意事项. 2.自动登陆+查找页面 由于现在淘宝的反爬机制,需要登陆才好下一步操作.在搜索输入后页面会调入登陆 ...

  6. Python爬虫+selenium——爬取淘宝商品信息和数据分析

    浏览器驱动 点击下载chromedrive .将下载的浏览器驱动文件chromedriver丢到Chrome浏览器目录中的Application文件夹下,配置Chrome浏览器位置到PATH环境. 需 ...

  7. python使用Selenium爬取淘宝商品信息

           由于淘宝对自动化工具进行了识别,直接进入登录页面滑动二维码一直会报错,所以采取了曲线救国的方式,通过用微博账号来登录淘宝.刚自学<Python3网络爬虫开发实战>,和里面的代 ...

  8. 使用python selenium爬取淘宝商品信息 自动登录淘宝和爬取某一宝贝的主图,属性图和详情图等等

    selenium作为一个自动化测试工具非常好用,谁用谁知道啊. 先说如何登录淘宝,淘宝现在直接用会员名和密码登录会有滑块验证,找了网上说的几种方法和自己尝试了一番效果还是不太理想,实测过程中,即使滑块 ...

  9. Python爬虫学习之爬取淘宝搜索图片

    Python爬虫学习之爬取淘宝搜索图片 准备工作 因为淘宝的反爬机制导致Scrapy不能使用,所以我这里是使用selenium来获取网页信息,并且通过lxml框架来提取信息. selenium.lxm ...

最新文章

  1. R19436221 区间第k小 主席树
  2. Replication--镜像+复制
  3. 原生js实现发短信~chat
  4. excel分类_Excel数据处理学习(七)使用分类汇总
  5. pythondataframe如何替换值_如何将pandas dataframe中的字符串值替换为整数?
  6. 输出以下图案菱形7行_春夏格子图案超流行,三木的一款格子连衣裙,带来田园少女风...
  7. ScrollReveal.js – 帮助你实现超炫的元素运动效果
  8. centos7查看mysql日志_centos 7 mysql启动失败–学会看错误日志
  9. 数字信号处理matlab实验心得,数字信号处理学习心得体会3篇
  10. Fisher精确检验与卡方检验
  11. 一次完整的渗透测试流程
  12. 新的 systemctl 命令代替原来的 chkconfig、service 命令
  13. 7-6 输入数据范围的简单判断7-7 计算半圆面积和弧长
  14. 验证input和textarea的输入是否有效,也就是不为空,也不都是空格
  15. Win10安装Docker和k8s
  16. js控制网页动态效果
  17. python打包成独立exe_用PyInstaller把Python代码打包成单个独立的exe可执行文件
  18. R语言实战-读书笔记 (第8章 回归)
  19. caj转pdf——包含下载链接
  20. web进销存源码-Java进销存ERP软件系统源码定制多仓库多门店 + 小程序 Saas多商户

热门文章

  1. WPF中创建水晶动画效果的treeview控件
  2. mysql安装时损坏的图像_损坏的图像,小编教你提示损坏的图像该怎么解决
  3. java鼠标滑入换图片_超简单---鼠标滑过变换图片
  4. 我的妻子总问我她今天该穿什么,于是我用AI做了这样一款时尚应用
  5. 关于Lua语言的发展前景
  6. 大学计算机课程标准,大学计算机课程标准
  7. 马哈鱼SQLFLow数据流生成介绍
  8. matlab 光度 三维重构 code,基于matlab的三维点云数据三维重建
  9. ThreadPool讲解
  10. 计算机关机重启后黑屏,电脑重启以后一直黑屏怎么回事_电脑重启后黑屏没反应的解决方法...