python爬虫爬取淘宝商品信息(selenum+phontomjs)


Posted in Python onFebruary 24, 2018

本文实例为大家分享了python爬虫爬取淘宝商品的具体代码,供大家参考,具体内容如下

1、需求目标

进去淘宝页面,搜索耐克关键词,抓取 商品的标题,链接,价格,城市,旺旺号,付款人数,进去第二层,抓取商品的销售量,款号等。

python爬虫爬取淘宝商品信息(selenum+phontomjs)

python爬虫爬取淘宝商品信息(selenum+phontomjs)

python爬虫爬取淘宝商品信息(selenum+phontomjs)

2、结果展示

python爬虫爬取淘宝商品信息(selenum+phontomjs)

3、源代码

# encoding: utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import time
import pandas as pd
time1=time.time()
from lxml import etree
from selenium import webdriver
#########自动模拟
driver=webdriver.PhantomJS(executable_path='D:/Python27/Scripts/phantomjs.exe')
import re

#################定义列表存储#############
title=[]
price=[]
city=[]
shop_name=[]
num=[]
link=[]
sale=[]
number=[]

#####输入关键词耐克(这里必须用unicode)
keyword="%E8%80%90%E5%85%8B"


for i in range(0,1):

  try:
    print "...............正在抓取第"+str(i)+"页..........................."

    url="https://s.taobao.com/search?q=%E8%80%90%E5%85%8B&imgfile=&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20170710&ie=utf8&bcoffset=4&ntoffset=4&p4ppushleft=1%2C48&s="+str(i*44)
    driver.get(url)
    time.sleep(5)
    html=driver.page_source

    selector=etree.HTML(html)
    title1=selector.xpath('//div[@class="row row-2 title"]/a')
    for each in title1:
      print each.xpath('string(.)').strip()
      title.append(each.xpath('string(.)').strip())


    price1=selector.xpath('//div[@class="price g_price g_price-highlight"]/strong/text()')
    for each in price1:
      print each
      price.append(each)


    city1=selector.xpath('//div[@class="location"]/text()')
    for each in city1:
      print each
      city.append(each)


    num1=selector.xpath('//div[@class="deal-cnt"]/text()')
    for each in num1:
      print each
      num.append(each)


    shop_name1=selector.xpath('//div[@class="shop"]/a/span[2]/text()')
    for each in shop_name1:
      print each
      shop_name.append(each)


    link1=selector.xpath('//div[@class="row row-2 title"]/a/@href')
    for each in link1:
      kk="https://" + each


      link.append("https://" + each)
      if "https" in each:
        print each

        driver.get(each)
      else:
        print "https://" + each
        driver.get("https://" + each)
      time.sleep(3)
      html2=driver.page_source
      selector2=etree.HTML(html2)

      sale1=selector2.xpath('//*[@id="J_DetailMeta"]/div[1]/div[1]/div/ul/li[1]/div/span[2]/text()')
      for each in sale1:
        print each
        sale.append(each)

      sale2=selector2.xpath('//strong[@id="J_SellCounter"]/text()')
      for each in sale2:
        print each
        sale.append(each)

      if "tmall" in kk:
        number1 = re.findall('<ul id="J_AttrUL">(.*?)</ul>', html2, re.S)
        for each in number1:
          m = re.findall('>*号: (.*?)</li>', str(each).strip(), re.S)
          if len(m) > 0:
            for each1 in m:
              print each1
              number.append(each1)

          else:
            number.append("NULL")

      if "taobao" in kk:
        number2=re.findall('<ul class="attributes-list">(.*?)</ul>',html2,re.S)
        for each in number2:
          h=re.findall('>*号: (.*?)</li>', str(each).strip(), re.S)
          if len(m) > 0:
            for each2 in h:
              print each2
              number.append(each2)

          else:
            number.append("NULL")

      if "click" in kk:
        number.append("NULL")

  except:
    pass


print len(title),len(city),len(price),len(num),len(shop_name),len(link),len(sale),len(number)

# #
# ######数据框
data1=pd.DataFrame({"标题":title,"价格":price,"旺旺":shop_name,"城市":city,"付款人数":num,"链接":link,"销量":sale,"款号":number})
print data1
# 写出excel
writer = pd.ExcelWriter(r'C:\\taobao_spider2.xlsx', engine='xlsxwriter', options={'strings_to_urls': False})
data1.to_excel(writer, index=False)
writer.close()

time2 = time.time()
print u'ok,爬虫结束!'
print u'总共耗时:' + str(time2 - time1) + 's'
####关闭浏览器
driver.close()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现倒计时的示例
Feb 14 Python
Python类的多重继承问题深入分析
Nov 09 Python
python 的列表遍历删除实现代码
Apr 12 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
Dec 24 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
Dec 25 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
Apr 28 Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
Jul 03 Python
python+numpy按行求一个二维数组的最大值方法
Jul 09 Python
详解Python的三种拷贝方式
Feb 11 Python
Jupyter Notebook远程登录及密码设置操作
Apr 10 Python
python爬虫实例之获取动漫截图
May 31 Python
Python实现一个优先级队列的方法
Jul 31 Python
python正则表达式爬取猫眼电影top100
Feb 24 #Python
python爬虫获取淘宝天猫商品详细参数
Jun 23 #Python
python按综合、销量排序抓取100页的淘宝商品列表信息
Feb 24 #Python
python2.7+selenium2实现淘宝滑块自动认证功能
Feb 24 #Python
Python 中Pickle库的使用详解
Feb 24 #Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
Feb 24 #Python
python3+mysql查询数据并通过邮件群发excel附件
Feb 24 #Python
You might like
让这部DC动画新作刷新你的认知
2020/03/03 欧美动漫
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
php实现可以设置中奖概率的抽奖程序代码分享
2014/01/19 PHP
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
2014/11/19 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
2019/04/02 PHP
php apache开启跨域模式过程详解
2019/07/08 PHP
jquery.combobox中文api和例子,修复了上面的小bug
2011/03/28 Javascript
关于textarea提交的内容无法换行的解决办法
2013/04/09 Javascript
js的alert弹出框出现乱码解决方案
2013/09/02 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
超级简易的JS计算器实例讲解(实现加减乘除)
2017/08/08 Javascript
Javascript实现运算符重载详解
2018/04/07 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
泛谈JS逻辑判断选择器 || &amp;&amp;
2019/05/24 Javascript
详解vue v-model
2020/08/31 Javascript
JavaScript实现点击切换功能
2021/01/27 Javascript
[59:15]EG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/29 DOTA
你所不知道的Python奇技淫巧13招【实用】
2016/12/14 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
2019/01/14 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
Java byte数组操纵方式代码实例解析
2020/07/22 Python
Python txt文件如何转换成字典
2020/11/03 Python
CSS3教程(5):网页背景图片
2009/04/02 HTML / CSS
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图
2015/08/31 HTML / CSS
现代家居用品及礼品:LBC Modern
2018/06/24 全球购物
NFL欧洲商店(德国):NFL Europe Shop DE
2018/11/03 全球购物
怎样让char类型的东西转换成int类型
2013/12/09 面试题
请问如下代码执行后a和b的值分别是什么
2016/05/05 面试题
护理专业的自荐信
2013/10/22 职场文书
大专生的学习自我评价
2013/12/04 职场文书
通用求职信范文模板分享
2013/12/27 职场文书
表彰先进的通报
2014/01/31 职场文书