最近有人反映淘宝的搜索功能要登录才能用,原先的直接爬取的方法挂了。稍微把之前的代码修改了一下,登录采用最简单的复制cookie来解决。

顺便说一下,这只是根据搜索的的索引界面获取的信息,并未深入的获取每个具体商品的信息。为了以后有拓展空间,便于爬取详细的商品信息,我顺便把详情页的URL拿下来了。

淘宝的页面其实并未做多大改变(吐槽一下:淘宝的程序员也挺懒的),之前的代码只要加上登录功能就能使用。

直接上代码:

  1. import requests
  2. from bs4 import BeautifulSoup
  3. import re
  4. from xlwt import Workbook
  5. import xlrd
  6. import sys
  7.  
  8. R = requests.Session()
  9. URL = "https://s.taobao.com/search?q="
  10.  
  11. """
  12. Get_Html()函数功能:根据搜索的关键字和页数信息,获取包含数据的HTML源码
  13. 参数:
  14. keyword:字符串,搜索的关键字
  15. page:字符串,页数
  16. 返回值:
  17. text:字符串,包含数据的HTML源码
  18. """
  19. def Get_Html(keyword,page):
  20. url = URL+keyword+"&ie=utf8&s="+str(page)
  21. cookies = {}
  22. raw_cookies = #这里copy你的cookie,我自然不可能放我的
  23. for lies in raw_cookies.split(';'):
  24. key,word = lies.split('=',1)
  25. cookies[key] = word
  26.  
  27. res = R.get(url,cookies = cookies)
  28. text = res.text
  29. return text
  30.  
  31. """
  32. Get_Data()函数功能:从包含数据的HTML源码中解析出需要的数据
  33. 参数:
  34. text:字符串,是一些包含数据的HTML源码
  35. 返回值:
  36. data:字符串,包含需要数据的json字符串
  37. """
  38. def Get_Data( text):
  39. reg = r',"data":{"spus":\[({.+?)\]}},"header":'
  40. reg = re.compile(reg)
  41. data = re.findall(reg, text)[0]
  42. return data
  43.  
  44. """
  45. Download_Data()函数功能:将获取的数据选择一部分写入excel表格,如果想写入数据库,这部分代码需要自己写
  46. 参数:
  47. data:包含数据的json字符串
  48. N:写入excel表的第几行
  49. sheet:excel表的一张表的句柄
  50. """
  51. def Download_Data( data, N, sheet ):
  52. Date = eval(data)
  53.  
  54. for d in Date:
  55. sheet.write(N,0,d['title'])
  56. sheet.write(N,1,d['price'])
  57. sheet.write(N,2," ".join([t['tag'] for t in d['tag_info']]))
  58. sheet.write(N,3,d['url'][2:])
  59. N = N + 1
  60. return N
  61.  
  62. """
  63. 主调函数,函数工作流程大致如下:
  64. 1.创建存储数据需要的sheet表格,目前只获取四个个特征:手机名、价格、特点和商品链接
  65. 2.按照关键字进行搜索,然后将获得的数据全部存入创建好的sheet中。
  66. 参数:
  67. keyword:要搜索的关键字
  68. """
  69. def main(keyword):
  70. book = Workbook()
  71. sheet = book.add_sheet(keyword)
  72. sheet.write(0,0,'品牌')
  73. sheet.write(0,1,'价格')
  74. sheet.write(0,2,'特点')
  75. sheet.write(0,3,'链接')
  76. book.save('淘宝数据.xls')
  77.  
  78. k = 0
  79. N = 1
  80. i = 0
  81. while(True):
  82. text = Get_Html(keyword,i*48)
  83. try:
  84.  
  85. data = Get_Data(text)
  86. N = Download_Data(data,N,sheet)
  87. except:
  88. break
  89.  
  90. book.save('淘宝数据.xls')
  91. print('下载第' + str(i+1) + '页完成')
  92. i = i + 1
  93.  
  94. print('全部数据收集完成')
  95.  
  96. if __name__ == '__main__':
  97. keyword = sys.argv[1]
  98. main(keyword)

只要把上面的Get_HTML()函数中的 raw_cookies 修改成你的 cookie 就可以了,至于怎么获取 cookie ,Google吧!

下面是我以"华为手机"为关键字的部分搜索结果:

发现了一个17块的华为手机,复制链接一看:

果然...

上面这个页面的信息和评论信息才是更有用的数据,以后有时间再看弄不弄吧!

python3爬取淘宝商品(失效)的更多相关文章

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

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

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

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

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

    一.  Selenium和PhantomJS介绍 Selenium是一个用于Web应用程序测试的工具,Selenium直接运行在浏览器中,就像真正的用户在操作一样.由于这个性质,Selenium也是一 ...

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

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

  5. <day003>登录+爬取淘宝商品信息+字典用json存储

    任务1:利用cookie可以免去登录的烦恼(验证码) ''' 只需要有登录后的cookie,就可以绕过验证码 登录后的cookie可以通过Selenium用第三方(微博)进行登录,不需要进行淘宝的滑动 ...

  6. 爬取淘宝商品信息,放到html页面展示

    爬取淘宝商品信息 import pymysql import requests import re def getHTMLText(url): kv = {'cookie':'thw=cn; hng= ...

  7. 利用Python爬虫爬取淘宝商品做数据挖掘分析实战篇,超详细教程

    项目内容 本案例选择>> 商品类目:沙发: 数量:共100页  4400个商品: 筛选条件:天猫.销量从高到低.价格500元以上. 项目目的 1. 对商品标题进行文本分析 词云可视化 2. ...

  8. python爬虫学习(三):使用re库爬取"淘宝商品",并把结果写进txt文件

    第二个例子是使用requests库+re库爬取淘宝搜索商品页面的商品信息 (1)分析网页源码 打开淘宝,输入关键字“python”,然后搜索,显示如下搜索结果 从url连接中可以得到搜索商品的关键字是 ...

  9. 使用Selenium爬取淘宝商品

    import pymongo from selenium import webdriver from selenium.common.exceptions import TimeoutExceptio ...

随机推荐

  1. light oj1028 - Trailing Zeroes (I)

    1028 - Trailing Zeroes (I)   We know what a base of a number is and what the properties are. For exa ...

  2. MATLAB添加工具箱及无法连接到MathWorks问题

    版本信息:官网下载的MATLAB R2019b 学生版 操作系统:Windows 10 在安装MATLAB时,需要我们自行选择要安装工具箱,如何在已安装MATLAB后添加当初没有选择安装的工具箱呢?第 ...

  3. 【爬虫】 爬虫请求json数据,返回乱码问题的解决

    from django.http import JsonResponse from rest_framework.utils import json from utils import request ...

  4. redis 5.0.7 源码阅读——压缩列表ziplist

    redis中压缩列表ziplist相关的文件为:ziplist.h与ziplist.c 压缩列表是redis专门开发出来为了节约内存的内存编码数据结构.源码中关于压缩列表介绍的注释也写得比较详细. 一 ...

  5. 常量, char[], const char[], char*, const char*, char* const以及const char* const的详解

    注意,这里用char类型只是举了一个例子,其他的int之类的也通用. 1: 常量: 例子: char str[] = "Hello world!"; char ch = 'a'; ...

  6. python filter函数(40)

    一.filter函数简介 filter函数主要用来筛选数据,过滤掉不符合条件的元素,并返回一个迭代器对象,如果要转换为列表list或者元祖tuple,可以使用内置函数list() 或者内置函数tupl ...

  7. Jmeter连接数据库并使用数据表数据作为接口所需参数

    jmeter连接数据库,并且使用数据库的用户名密码进行登录操作,具体步骤如下: 1.参考博客<Jmeter连接SqlServer数据库并操作>进行相关内容的补充,修改JDBC Reques ...

  8. C语言再学习part1-宏观认识C语言

    天下莫柔弱于水,而攻坚强者莫之能胜,以其无以易之也.弱之胜强,柔之胜刚,天下莫不知行,莫能行. —老子 我近来每天都在坚持读书,所以我一直沉浸于古人的智慧中无法自拔.所以如果我这篇博文被你有幸看到,那 ...

  9. java面试必问问题总结

    1. 自我介绍 2. get跟load的区别 3. 什么是重载,什么是重写 4. HashTable跟HashMap的区别 5. Jsp九大隐式对象 6. Forword和redirect 的区别 7 ...

  10. 牛客网剑指offer第19题——顺时针打印矩阵

    这个题看似很简单: 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 ...