博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PythonSpider---爬取淘宝店铺信息并导入excel
阅读量:6694 次
发布时间:2019-06-25

本文共 2310 字,大约阅读时间需要 7 分钟。

挺久没更新简书了,之前一直在忙机器视觉的开题报告,现在又要期末复习,射频通信,信号处理看的脑阔疼,所以决定写个简单点的爬虫,放松下,换个环境,也顺便巩固下爬虫。


img_24b787a69dde4429cc2429c6b2d004cb.png
图片来自网络

0.运行环境

  • Python3.6.5
  • Pycharm
  • win10

1.爬虫思维框架

img_3b77da88d193c6cb488730f4001ccf11.png
框架

1:从上图中可以看出本次爬虫所用到的库,其中xlsxwriter库是用来制作excel表格存储数据的,剩余两个库就不用多说了,爬虫必备库,你一定接触过。

2:分四个步骤完成,详见上图框架。
3:

img_99dd727184ed0c0d0419dc887acd06cf.png
本次所要爬取的信息


2.可能遇到的问题及解决方案

  • Q1,无法获取网页源代码,得到的text总是为空?
    A1,必须在headers中加入cookie和user-agent,缺一不可。
  • Q2,使用beautifulsoup库好还是直接正则表达式RE好?
    A2,对于本次爬虫还是正则表达式好,做了就知道了。==!
  • Q3,如何爬取多个页面的信息?
    A3,仔细观察多个页面的URL有何区别,本次的URL最后,第一页是0,第二页是20,第三页是40,找规律便可取得所有页面的URL。
  • Q4,我还有其他疑问怎么办?
    A4,在评论区提出,博主会第一时间回复你的哦!

3.完整代码

import requestsimport reimport xlsxwriterdef getUrl(page):   # page为[0,10]内的整数    part1 = 'https://shopsearch.taobao.com/search?app=shopsearch&spm=a230r.7195193.0.0.45xMl6&q=%E9%A3%9F%E5%93%81&tracelog=shopsearchnoqcat&s='    list = []    for a in range(0, page):        part2 = '{}'.format(20*a)        url = part1 + part2        list.append(url)    return listdef getHtmlText(url):    try:        headers = {            隐藏,因为每个人都不一样,可通过F12获取,具体方法自行百度            Cookie 和 User-Agent必须要        }        res = requests.get(url, headers=headers, timeout=30)        res.raise_for_status()        res.encoding = res.apparent_encoding        # time.sleep(1)        return res.text    except:        return '网络异常'def getTaobaoData(text):    NAME = re.findall('"nick":"(.*?)"', text)    PLACE = re.findall('"provcity":"(.*?)"', text)    Totalsold = re.findall('"totalsold":(.*?),', text)    Procnt = re.findall('"procnt":(.*?),', text)    return NAME, PLACE, Totalsold, Procntdef main(page):    num = 0    List = getUrl(page)    TaobaoData = xlsxwriter.Workbook('E:\\taobaodata.xlsx')    StoresData = TaobaoData.add_worksheet()    title = [u'店铺', u'地址', u'销量', u'产品数']    StoresData.write_row('A1', title)    StoresData.set_column('A:D', 25)    for URL in List:        Text = getHtmlText(URL)        name, place, totalsold, procnt = getTaobaoData(Text)        StoresData.write_column(1+20*num, 0, name)        StoresData.write_column(1+20*num, 1, place)        StoresData.write_column(1+20*num, 2, totalsold)        StoresData.write_column(1+20*num, 3, procnt)        num += 1        if not name:            print('第{}页爬取失败'.format(num))        else:            print('第{}页爬取成功'.format(num))    TaobaoData.close()if __name__ == '__main__':    a = input('请输入需要爬取的页数(建议小于10):')    main(int(a))

4.实现效果

img_7281469524c6c3be4422a6cb5ad1fd29.png
Excel

转载地址:http://fdjoo.baihongyu.com/

你可能感兴趣的文章
如同透视!湖北医院首次将VR用于肺癌切除
查看>>
Oracle数据文件和临时文件的管理
查看>>
4python全栈之路系列之scrapy爬虫s
查看>>
华为S9300、s5700交换机端口镜像配置
查看>>
如何清除Exchange2010邮件日志
查看>>
PHP优化
查看>>
学习笔记 254: 预备知识总结
查看>>
javascript之事件监听
查看>>
linux运维转行程序员
查看>>
国内外软件测试大会汇总
查看>>
背水一战 Windows 10 (72) - 控件(控件基类): UIElement - UIElement 的位置, UIElement 的布局, UIElement 的其他特性...
查看>>
iscis
查看>>
iOS HTTP 资源时需要对 URL 进行 Encode
查看>>
nginx 负载均衡5种方式及其服务器几种状态
查看>>
每天早上七点钟备份公司的web站点计划
查看>>
iOS GCD(Grand Central Dispatch)的使用(1)
查看>>
linux ftp上传下载命令操作
查看>>
灰鸽子键盘记录源码分析及一个中英文键盘记录代码
查看>>
企业linux四国争霸
查看>>
ELK实时日志分析平台(elk+kafka+metricbeat)-metricbeat(三)
查看>>