使用工具介绍

python3.8
selenium(请确保你已经成功安装了谷歌驱动chromedriver)
mongodb数据库
mongo-compass
谷歌浏览器

分析请求链接

打开淘宝首页的链接,https://www.taobao.com/如下:
这里以商品ipad为例,在搜索框输入ipad,点击搜索,如下所示:

复制前四页的链接:找一下规律

第一页:https://uland.taobao.com/sem/tbsearch?refpid=mm_26632258_3504122_32538762&keyword=ipad&clk1=131aad029d6faa56c03288f51979aa45&upsId=131aad029d6faa56c03288f51979aa45&spm=a2e0b.20350158.search.1&pid=mm_26632258_3504122_32538762&union_lens=recoveryid%3A201_11.170.87.38_13712137_1628510033830%3Bprepvid%3A201_11.136.53.174_13740411_1628511461979
第二页:https://uland.taobao.com/sem/tbsearch?refpid=mm_26632258_3504122_32538762&keyword=ipad&clk1=131aad029d6faa56c03288f51979aa45&upsId=131aad029d6faa56c03288f51979aa45&spm=a2e0b.20350158.31919782.1&pid=mm_26632258_3504122_32538762&union_lens=recoveryid%3A201_11.170.87.38_13712137_1628510033830%3Bprepvid%3A201_11.136.53.174_13740411_1628511461979&pnum=1
第三页:https://uland.taobao.com/sem/tbsearch?refpid=mm_26632258_3504122_32538762&keyword=ipad&clk1=131aad029d6faa56c03288f51979aa45&upsId=131aad029d6faa56c03288f51979aa45&spm=a2e0b.20350158.31919782.1&pid=mm_26632258_3504122_32538762&union_lens=recoveryid%3A201_11.170.87.38_13712137_1628510033830%3Bprepvid%3A201_11.136.53.174_13740411_1628511461979&pnum=2
第四页:https://uland.taobao.com/sem/tbsearch?refpid=mm_26632258_3504122_32538762&keyword=ipad&clk1=131aad029d6faa56c03288f51979aa45&upsId=131aad029d6faa56c03288f51979aa45&spm=a2e0b.20350158.31919782.1&pid=mm_26632258_3504122_32538762&union_lens=recoveryid%3A201_11.170.87.38_13712137_1628510033830%3Bprepvid%3A201_11.136.53.174_13740411_1628511461979&pnum=3

很明显的可以看到除了第一页链接有些特殊,其他几页的链接基本一样,唯一的区别是最后的pnum的值不一样!分别为1,2,3。还可以发现当我们把值设置为0时,打开链接就是第一页的数据!可以根据这个规律构造前十页的链接:

base_url = 'https://uland.taobao.com/sem/tbsearch?refpid=mm_26632258_3504122_32538762&keyword=ipad&clk1=131aad029d6faa56c03288f51979aa45&upsId=131aad029d6faa56c03288f51979aa45&spm=a2e0b.20350158.31919782.1&pid=mm_26632258_3504122_32538762&union_lens=recoveryid%3A201_11.170.87.38_13712137_1628510033830%3Bprepvid%3A201_11.136.53.174_13740411_1628511461979&pnum={}'
url_list = [base_url.format(i) for i in range(10)]

获取网页源码

直接使用requests获取网页源码是获取不到全部数据的,因此这里选择使用selenium获取网页源码数据,代码如下:

def get_html(url):browser = webdriver.Chrome()browser.get(url)response = browser.page_sourcebrowser.close()return response

解析数据

解析数据可以使用lxml模块。因为xpath表达式可以直接从谷歌浏览器复制,所以用这个比较简单!我这里简单了商品标签、店铺名称、商品价格、以及销量四个数据。
代码如下:

def parser(response):html = etree.HTML(response)li_list = html.xpath('//*[@id="mx_5"]/ul/li')ipad_info = []for li in li_list:title = li.xpath('./a/div[1]/span/text()')[0]price = li.xpath('./a/div[2]/span[2]/text()')[0]shop = li.xpath('./a/div[3]/div/text()')[0]sales = li.xpath('./a/div[4]/div[2]/text()')[0]ipad_info.append({'title': title, 'price': price, 'shop': shop, 'sales': sales})return ipad_info

存储数据

把解析的数据保存到mongodb数据库。这里新建一个名为Taobao的数据库,集合名称为ipad_info

def save_info_to_mongo(ipad_info):client = pymongo.MongoClient('localhost', 27017)collection = Collection(Database(client, 'Taobao'), 'ipad_info')for info in ipad_info:collection.insert_one(info)client.close()

全部代码

import pymongo
from lxml import etree
from selenium import webdriver
from pymongo.collection import Collection
from pymongo.database import Databasedef get_html(url):browser = webdriver.Chrome()browser.get(url)response = browser.page_sourcebrowser.close()return responsedef parser(response):html = etree.HTML(response)li_list = html.xpath('//*[@id="mx_5"]/ul/li')ipad_info = []for li in li_list:title = li.xpath('./a/div[1]/span/text()')[0]price = li.xpath('./a/div[2]/span[2]/text()')[0]shop = li.xpath('./a/div[3]/div/text()')[0]sales = li.xpath('./a/div[4]/div[2]/text()')[0]ipad_info.append({'title': title, 'price': price, 'shop': shop, 'sales': sales})return ipad_infodef save_info_to_mongo(ipad_info):client = pymongo.MongoClient('localhost', 27017)collection = Collection(Database(client, 'Taobao'), 'ipad_info')for info in ipad_info:collection.insert_one(info)client.close()if __name__ == '__main__':base_url = 'https://uland.taobao.com/sem/tbsearch?refpid=mm_26632258_3504122_32538762&keyword=ipad&clk1=131aad029d6faa56c03288f51979aa45&upsId=131aad029d6faa56c03288f51979aa45&spm=a2e0b.20350158.31919782.1&pid=mm_26632258_3504122_32538762&union_lens=recoveryid%3A201_11.170.87.38_13712137_1628510033830%3Bprepvid%3A201_11.136.53.174_13740411_1628511461979&pnum={}'url_list = [base_url.format(i) for i in range(10)]print(url_list)for url in url_list:ipad_info = parser(get_html(url))save_info_to_mongo(ipad_info)

结果展示

我这里仅仅爬取了前十页数据,一页60条数据,一共600条数据如下!

最后

例子仅供参考学习,如有错误,敬请指出!

python爬虫爬取淘宝商品并保存至mongodb数据库相关推荐

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

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

  2. python爬虫 — 爬取淘宝商品信息

    (一)确定需要爬取的信息 在爬取前首先确定需要获取的信息,打开taobao,在搜索框中输入,需要获取的商品的信息,比如ipad,点击搜索 就可以看到许多的ipad,选择其中的一款商品,比如第一个 可以 ...

  3. Python + selenium 爬取淘宝商品列表及商品评论 2021-08-26

    Python + selenium 爬取淘宝商品列表及商品评论[2021-08-26] 主要内容 登录淘宝 获取商品列表 获取评论信息 存入数据库 需要提醒 主要内容 通过python3.8+ sel ...

  4. python淘宝爬虫_python爬虫爬取淘宝商品信息

    本文实例为大家分享了python爬取淘宝商品的具体代码,供大家参考,具体内容如下 import requests as req import re def getHTMLText(url): try: ...

  5. 爬取淘宝商品信息selenium+pyquery+mongodb

    ''' 爬取淘宝商品信息,通过selenium获得渲染后的源码,pyquery解析,mongodb存储 '''from selenium import webdriver from selenium. ...

  6. Python requests爬取淘宝商品信息

    作者:achen 联系方式:wh909077093 这里记一下大概的思路以及实现方法,有基础的小伙伴看了基本就能实现了,如果有业务需要可以联系我哈哈哈哈哈哈 本文代码参考猪哥66的思路 项目内容 指定 ...

  7. python简单爬取淘宝商品信息

    爬取淘热卖商品"泡面"的信息,包括商品名称,店铺,链接,付款人数,价格等,用csv保存 import requests import csv import time import ...

  8. 简单使用Python爬虫爬取淘宝网页商品信息

    最近在学习爬虫,本人还是入门级的小白,自己跟着老师写了一些代码,算是自己的总结,还有一些心得,跟大家分享一下,如果不当,还请各位前辈斧正. 这是代码: # 导入库 import requests im ...

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

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

最新文章

  1. Java学习总结:12
  2. P3482 [POI2009]SLO-Elephants
  3. 信号延长器常见故障问题及解决方案汇总
  4. Linux 编译安装BIND
  5. ORACLE EBS CUX用户的创建(转)
  6. 单片机重要组成部分还有什么,引脚封装分布知识讲解(一)
  7. Linux下的网卡驱动程序的编写过程(转)
  8. android rom root权限,教你刷机包获取ROOT权限的方法
  9. 电路知识--认识原理图(一)
  10. winEdit无法生成PDF解决方案
  11. 服务器经常被攻击怎么办
  12. Even-Odd Increments
  13. LinuxC TCP实现简易聊天室
  14. P2071 座位安排(二分图最大匹配)
  15. 近几年一直流行说的DSP具体是什么,为什么大家都在关注
  16. 五角场 IT 养老院的性价比!
  17. 文献综述参考文献的格式说明
  18. SpringMVC——文件上传下载,异步请求和SSM整合
  19. 湖北黄冈计算机考试,湖北黄冈2020年注会什么时候考试?是计算机考试吗?
  20. 微博情感分析——数据的获取(一)

热门文章

  1. GitHub上的7个超棒Vue管理后台框架
  2. DDR3中bank, 16bit和32bit等概念(很好的资料)
  3. ubuntu系统批量修改文件内容
  4. 记一次npm run build:prod打包失败的处理方法
  5. 单口RAM、双口RAM、FIFO三者的关系
  6. BDTC 2017 | 学术、行业、货币专家共话区块链的现状和未来
  7. 2021年资料员-通用基础(资料员)考试及资料员-通用基础(资料员)考试APP
  8. python绘制sinx图像_matplotlib.pyplot绘制图像之同一图中多条曲线对比
  9. 基于AR模型的功率谱matlab,基于AR模型法功率谱估计的Matlab实现
  10. 二世古新世界·羽·度假村将于2023年盛大揭幕