1. 1.re实现
  1. import requests
  2. from requests.exceptions import RequestException
  3. import re,json
  4. import xlwt,xlrd
  5.  
  6. # 数据
  7. DATA = []
  8. KEYWORD = 'python'
  9. HEADERS = {'user-agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome'\
  10. '/63.0.3239.132 Safari/537.36'}
  11. MAX_PAGE = 10
  12.  
  13. def get_target(data_list):
  14. for item in data_list:
  15. temp = {
  16. 'title': item['title'],
  17. 'price': item['view_price'],
  18. 'sales': item['view_sales'],
  19. 'isTmall': '否' if float(item['view_fee']) else '是',
  20. 'area': item['item_loc'],
  21. 'name': item['nick'],
  22. 'url': item['detail_url']
  23. }
  24. DATA.append(temp)
  25. return True
  26.  
  27. # 发送http请求,获取网页源码
  28. def get_html(url,*args):
  29. try:
  30. if not args:
  31. response = requests.get(url,headers=HEADERS)
  32. global COOKIES
  33. COOKIES = response.cookies # 获取cookie
  34. else:
  35. response = requests.get(url,headers=HEADERS,cookies=COOKIES)
  36.  
  37. response.encoding = response.apparent_encoding
  38. return response.text
  39. except RequestException:
  40. print('请求源码出错!')
  41.  
  42. # 解析源码,得到目标信息
  43. def parse_html(html,*args):
  44. if not args:
  45. pattern = re.compile(r'g_page_config = (.*?)g_srp_loadCss',re.S)
  46. # 去掉末尾的';'
  47. result = re.findall(pattern, html)[0].strip()[:-1]
  48. # 格式化json,可以用json在线解析工具查看结构
  49. content = json.loads(result)
  50. data_list = content['mods']['itemlist']['data']['auctions']
  51. else:
  52. pattern = re.compile(r'{.*}',re.S)
  53. result = re.findall(pattern,html)[0]
  54. content = json.loads(result)
  55. data_list = content['API.CustomizedApi']['itemlist']['auctions']
  56.  
  57. get_target(data_list)
  58.  
  59. def save_to_excel():
  60. f_name = '淘宝%s数据'%KEYWORD
  61. book = xlwt.Workbook(encoding='utf-8',style_compression=0)
  62. sheet = book.add_sheet(f_name)
  63. sheet.write(0, 0, 'title')
  64. sheet.write(0, 1, 'price')
  65. sheet.write(0, 2, 'sales')
  66. sheet.write(0, 3, 'isTmall')
  67. sheet.write(0, 4, 'area')
  68. sheet.write(0, 5, 'name')
  69. sheet.write(0, 6, 'url')
  70. for i in range(len(DATA)):
  71. sheet.write(i+1, 0, DATA[i]['title'])
  72. sheet.write(i+1, 1, DATA[i]['price'])
  73. sheet.write(i+1, 2, DATA[i]['sales'])
  74. sheet.write(i+1, 3, DATA[i]['isTmall'])
  75. sheet.write(i+1, 4, DATA[i]['area'])
  76. sheet.write(i+1, 5, DATA[i]['name'])
  77. sheet.write(i+1, 6, DATA[i]['url'])
  78. book.save('淘宝%s数据.xls'%KEYWORD)
  79.  
  80. def main():
  81. for offset in range(MAX_PAGE):
  82. # 首页有12条异步加载的数据 api?
  83. if offset == 0:
  84. url1 = 'https://s.taobao.com/search?q={}&s={}'.format(KEYWORD,offset*44)
  85. html = get_html(url1)
  86. contents = parse_html(html)
  87.  
  88. url2 = 'https://s.taobao.com/api?_ksTS=1532524504679_226&callback=jsonp227&ajax=true&m=customized&' \
  89. 'stats_click=search_radio_all:1&q={}'.format(KEYWORD)
  90. html = get_html(url2,2)
  91. contents = parse_html(html,2)
  92. else:
  93. url = 'https://s.taobao.com/search?q={}&s={}'.format(KEYWORD,offset*44)
  94. html = get_html(url)
  95. contents = parse_html(html)
  96.  
  97. save_to_excel()
  98. print(len(DATA))
  99.  
  100. if __name__ == '__main__':
  101. main()

爬取淘宝商品数据并保存在excel中的更多相关文章

  1. scrapy+selenium 爬取淘宝商城商品数据存入到mongo中

    1.配置信息 # 设置mongo参数 MONGO_URI = 'localhost' MONGO_DB = 'taobao' # 设置搜索关键字 KEYWORDS=['小米手机','华为手机'] # ...

  2. 使用requests、BeautifulSoup、线程池爬取艺龙酒店信息并保存到Excel中

    import requests import time, random, csv from fake_useragent import UserAgent from bs4 import Beauti ...

  3. 使用requests、re、BeautifulSoup、线程池爬取携程酒店信息并保存到Excel中

    import requests import json import re import csv import threadpool import time, random from bs4 impo ...

  4. Python爬取猫眼电影100榜并保存到excel表格

    首先我们前期要导入的第三方类库有; 通过猫眼电影100榜的源码可以看到很有规律 如: 亦或者是: 根据规律我们可以得到非贪婪的正则表达式 """<div class ...

  5. 爬取拉勾网所有python职位并保存到excel表格 对象方式

    # 1.把之间案例,使用bs4,正则,xpath,进行数据提取. # 2.爬取拉钩网上的所有python职位. from urllib import request,parse import json ...

  6. Python 爬取淘宝商品数据挖掘分析实战

    Python 爬取淘宝商品数据挖掘分析实战 项目内容 本案例选择>> 商品类目:沙发: 数量:共100页  4400个商品: 筛选条件:天猫.销量从高到低.价格500元以上. 爬取淘宝商品 ...

  7. Selenium+Chrome/phantomJS模拟浏览器爬取淘宝商品信息

    #使用selenium+Carome/phantomJS模拟浏览器爬取淘宝商品信息 # 思路: # 第一步:利用selenium驱动浏览器,搜索商品信息,得到商品列表 # 第二步:分析商品页数,驱动浏 ...

  8. python3编写网络爬虫16-使用selenium 爬取淘宝商品信息

    一.使用selenium 模拟浏览器操作爬取淘宝商品信息 之前我们已经成功尝试分析Ajax来抓取相关数据,但是并不是所有页面都可以通过分析Ajax来完成抓取.比如,淘宝,它的整个页面数据确实也是通过A ...

  9. Python爬虫,抓取淘宝商品评论内容!

    作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿"德州扒鸡&qu ...

随机推荐

  1. Redis 常用命令学习三:哈希类型命令

    1.赋值与取值命令 127.0.0.1:6379> hset stu name qiao (integer) 1 127.0.0.1:6379> hset stu sex man (int ...

  2. TypeScript 高级类型

    ⒈交叉类型(Intersection Types) 交叉类型是将多个类型合并为一个类型. 这让我们可以把现有的多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性. 例如, Person &a ...

  3. 华为S5700系列交换机配置文件导出、导入

    一.导出 配置用户名密码,使能ftp ftp server enable aaa local-user putty password cipher putty123 local-user putty ...

  4. 学习Python类的心得

      类的注意事项 1)命名规则 需要注意的是,在Python中,变量名类似__xxx__的,也就是以双下划线开头,并且以双下划线结尾的, 是特殊变量,特殊变量是可以直接访问的,不是private变量, ...

  5. python学习-20 集合

    集合set 1.由不同元素组成的集合,集合是一组无序排列的,集合中的元素必须是不可变的 -定义集合 第一种: jh = {1,2,3,4} print(type(jh),jh) 运行结果: <c ...

  6. WUSTOJ 1283: Hamster(Java)

    1283: Hamster 参考博客 wust_tanyao的博客 题目   第0个月有1对仓鼠.仓鼠的寿命是M个月,仓鼠成年后每个月生一对仓鼠(一雌一雄),问N个月后有仓鼠多少对.更多内容点此链接 ...

  7. Python开发【杂货铺】:作用域的痛点

    1.块级作用域 想想此时运行下面的程序会有输出吗?执行会成功吗? #块级作用域 if 1 == 1: name = "lzl" print(name) for i in range ...

  8. Linux下PHP7.2扩展

    前言 由于公司某项目需要连接oracle数据库,该项目使用的开发语言为PHP,故需要对PHP进行扩展 环境说明 服务器:Centos7 PHP:7.2, 源码安装;安装路径:/usr/local/xx ...

  9. 前端移动端的rem适配计算原理

    rem是什么? rem(font size of the root element)是指相对于根元素的字体大小的单位.简单的说它就是一个相对单位.看到rem大家一定会想起em单位,em(font si ...

  10. ant build打包

    使用ant build进行增量打包 <?xml version="1.0" encoding="gb2312"?> <project name ...