python爬虫爬取淘宝商品并保存至mongodb数据库
使用工具介绍
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数据库相关推荐
- 利用Python爬虫爬取淘宝商品做数据挖掘分析实战篇,超详细教程
项目内容 本案例选择>> 商品类目:沙发: 数量:共100页 4400个商品: 筛选条件:天猫.销量从高到低.价格500元以上. 项目目的 1. 对商品标题进行文本分析 词云可视化 2. ...
- python爬虫 — 爬取淘宝商品信息
(一)确定需要爬取的信息 在爬取前首先确定需要获取的信息,打开taobao,在搜索框中输入,需要获取的商品的信息,比如ipad,点击搜索 就可以看到许多的ipad,选择其中的一款商品,比如第一个 可以 ...
- Python + selenium 爬取淘宝商品列表及商品评论 2021-08-26
Python + selenium 爬取淘宝商品列表及商品评论[2021-08-26] 主要内容 登录淘宝 获取商品列表 获取评论信息 存入数据库 需要提醒 主要内容 通过python3.8+ sel ...
- python淘宝爬虫_python爬虫爬取淘宝商品信息
本文实例为大家分享了python爬取淘宝商品的具体代码,供大家参考,具体内容如下 import requests as req import re def getHTMLText(url): try: ...
- 爬取淘宝商品信息selenium+pyquery+mongodb
''' 爬取淘宝商品信息,通过selenium获得渲染后的源码,pyquery解析,mongodb存储 '''from selenium import webdriver from selenium. ...
- Python requests爬取淘宝商品信息
作者:achen 联系方式:wh909077093 这里记一下大概的思路以及实现方法,有基础的小伙伴看了基本就能实现了,如果有业务需要可以联系我哈哈哈哈哈哈 本文代码参考猪哥66的思路 项目内容 指定 ...
- python简单爬取淘宝商品信息
爬取淘热卖商品"泡面"的信息,包括商品名称,店铺,链接,付款人数,价格等,用csv保存 import requests import csv import time import ...
- 简单使用Python爬虫爬取淘宝网页商品信息
最近在学习爬虫,本人还是入门级的小白,自己跟着老师写了一些代码,算是自己的总结,还有一些心得,跟大家分享一下,如果不当,还请各位前辈斧正. 这是代码: # 导入库 import requests im ...
- python+selenium爬取淘宝商品信息+淘宝自动登录——爬虫实战
1.前言 继续学习爬虫内容,这回是以selenium模拟操作进行抓取,其中有几个需要登陆的注意事项. 2.自动登陆+查找页面 由于现在淘宝的反爬机制,需要登陆才好下一步操作.在搜索输入后页面会调入登陆 ...
最新文章
- Java学习总结:12
- P3482 [POI2009]SLO-Elephants
- 信号延长器常见故障问题及解决方案汇总
- Linux 编译安装BIND
- ORACLE EBS CUX用户的创建(转)
- 单片机重要组成部分还有什么,引脚封装分布知识讲解(一)
- Linux下的网卡驱动程序的编写过程(转)
- android rom root权限,教你刷机包获取ROOT权限的方法
- 电路知识--认识原理图(一)
- winEdit无法生成PDF解决方案
- 服务器经常被攻击怎么办
- Even-Odd Increments
- LinuxC TCP实现简易聊天室
- P2071 座位安排(二分图最大匹配)
- 近几年一直流行说的DSP具体是什么,为什么大家都在关注
- 五角场 IT 养老院的性价比!
- 文献综述参考文献的格式说明
- SpringMVC——文件上传下载,异步请求和SSM整合
- 湖北黄冈计算机考试,湖北黄冈2020年注会什么时候考试?是计算机考试吗?
- 微博情感分析——数据的获取(一)
热门文章
- GitHub上的7个超棒Vue管理后台框架
- DDR3中bank, 16bit和32bit等概念(很好的资料)
- ubuntu系统批量修改文件内容
- 记一次npm run build:prod打包失败的处理方法
- 单口RAM、双口RAM、FIFO三者的关系
- BDTC 2017 | 学术、行业、货币专家共话区块链的现状和未来
- 2021年资料员-通用基础(资料员)考试及资料员-通用基础(资料员)考试APP
- python绘制sinx图像_matplotlib.pyplot绘制图像之同一图中多条曲线对比
- 基于AR模型的功率谱matlab,基于AR模型法功率谱估计的Matlab实现
- 二世古新世界·羽·度假村将于2023年盛大揭幕