Scrapy爬取淘宝网数据的尝试

scrapy_splash简单爬取淘宝页面信息 首先打开淘宝页面,搜索手机: https://uland.taobao.com/sem/tbsearch?refpid=mm_26632258_3504122_32538762&clk1=04511dd93dde330d86022e9ce3a3dc46&keyword=手机&page=0 # 新建scrapy项目 scrapy startproject taobao # ... 阅读详情

因为想学习数据库,想要获取较大量的数据,第一个想到的自然就是淘宝。。。。其中有大量的商品信息,淘宝网反爬措施还是比较多,特别是详情页面还有恶心的动态内容


该例子中使用Scrapy框架中的基础爬虫(CrawlSpider还有点没搞清楚= = b)

先贴上整体代码

import scrapy
import re
import csv
import pymongo
from tmail.items import TmailItem
class WeisuenSpider(scrapy.Spider):
    name = 'weisuen'
    start_url = 'https://s.taobao.com/search?q=%E5%B8%BD%E5%AD%90&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.50862.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170817&s=300'
    detail_urls=[]
    data=[]
    client=pymongo.MongoClient("localhost",27017)
    db=client.taobao
    db=db.items
    def start_requests(self):
        for i in range(30):#爬31页数据差不多了
            url=self.start_url+'&s='+str(i*44)
            yield scrapy.FormRequest(url=url,callback=self.parse)
    def url_decode(self,temp):
        while '\\' in temp:
            index=temp.find('\\')
            st=temp[index:index+7]
            temp=temp.replace(st,'')

        index=temp.find('id')
        temp=temp[:index+2]+'='+temp[index+2:]
        index=temp.find('ns')
        temp=temp[:index]+'&'+'ns='+temp[index+2:]
        index=temp.find('abbucket')
        temp='https:'+temp[:index]+'&'+'abbucket='+temp[index+8:]
        return temp
    def parse(self, response):
        item=response.xpath('//script/text()').extract()
        pat='"raw_title":"(.*?)","pic_url".*?,"detail_url":"(.*?)","view_price":"(.*?)"'
        urls=re.findall(pat,str(item))
        urls.pop(0)
        row={}.fromkeys(['name','price','link'])
        for url in urls:#解析url并放入数组中
            weburl=self.url_decode(temp=url[1])
            item=TmailItem()
            item['name']=url[0]
            item['link']=weburl
            item['price']=url[2]
            row['name']=item['name']
            row['price']=item['price']
            row['link']=item['link']
            self.db.insert(row)
            row={}.fromkeys(['name','price','link'])
            self.detail_urls.append(weburl)
            self.data.append(item)
        return item
        for item in self.detail_urls:#这个可以抓取评论等更多相关信息
            yield scrapy.FormRequest(url=item,callback=self.detail)
    def detail(self,response):
        print(response.url)
        #首先判断url来自天猫还是淘宝
        if 'tmall' in str(response.url):
            pass
        else:
            pass

items.py中定义3个属性:name,price,link

起始网页为淘宝的搜索地址,关键字我设置为“帽子”,当然修改关键字就只需要修改一下url中的q=后面的值就可以了

因为该类型商品信息量很大,有很多页所以重写start_requests(self)方法,获取前31页的内容

首先

name = 'weisuen'
    start_url = 'https://s.taobao.com/search?q=%E5%B8%BD%E5%AD%90&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.50862.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170817&s=300'
    detail_urls=[]
    data=[]
    client=pymongo.MongoClient("localhost",27017)
    db=client.taobao
    db=db.items
先在定义中打开mongodb数据库 当然我最初使用txt文本和CSV文件看结果,成功后再使用数据库

def start_requests(self):
        for i in range(30):#爬31页数据差不多了
            url=self.start_url+'&s='+str(i*44)
            yield scrapy.FormRequest(url=url,callback=self.parse)
通过观察发现页数由url后的s=xx决定 且这个值等于页数*44 


def parse(self, response):
        item=response.xpath('//script/text()').extract()
        pat='"raw_title":"(.*?)","pic_url".*?,"detail_url":"(.*?)","view_price":"(.*?)"'
        urls=re.findall(pat,str(item))
        urls.pop(0)
        row={}.fromkeys(['name','price','link'])
        for url in urls:#解析url并放入数组中
            weburl=self.url_decode(temp=url[1])
            item=TmailItem()
            item['name']=url[0]
            item['link']=weburl
            item['price']=url[2]
            row['name']=item['name']
            row['price']=item['price']
            row['link']=item['link']
            self.db.insert(row)
            row={}.fromkeys(['name','price','link'])
            self.detail_urls.append(weburl)
            self.data.append(item)
        return item
        for item in self.detail_urls:#这个可以抓取评论等更多相关信息
            yield scrapy.FormRequest(url=item,callback=self.detail)

在回调函数中对获取的网页数据进行解析,这里遇到的麻烦就是response.text会报错‘GBK xxxxx’因为淘宝网页不仅仅由UTF-8编码还有其他编码格式所以这样解码就会出现问题,我这里采取的是先使用xpath获取所有相关类容,再使用正则表达式对相关信息进行提取。其中每件商品的url都有动态类容需要去掉,这个使用了一个url_decode()方法去掉其中的动态类容。解码方法代码如下:

def url_decode(self,temp):
        while '\\' in temp:
            index=temp.find('\\')
            st=temp[index:index+7]
            temp=temp.replace(st,'')

        index=temp.find('id')
        temp=temp[:index+2]+'='+temp[index+2:]
        index=temp.find('ns')
        temp=temp[:index]+'&'+'ns='+temp[index+2:]
        index=temp.find('abbucket')
        temp='https:'+temp[:index]+'&'+'abbucket='+temp[index+8:]
        return temp

最后返回的url是可以直接打开的,在回调函数parse中将相关类容写入了数据库中,为了便于扩展,parse中生成了对于详情页面的请求,可以之后进行评论,评分等相关信息的抓取


数据库内容:



之前生成的CSV文件


Selenium实战:Python爬取淘宝商品数据,破解动态加载与反爬 网络爬虫是数据采集的核心技术,其原理是通过程序模拟浏览器行为,自动访问网页并提取结构化信息。在动态网页技术普及的今天,传统的基于HTTP请求的爬虫面临JavaScript渲染、接口加密等挑战,难以直接获取数据。Selenium作为浏览器自动化工具,通过驱动真实浏览器执行点击、输入等操作,能够完整渲染页面,从而绕过复杂的接口逆向工程,为爬取动态内容提供了高效解决方案。这一技术特别适用于电商平台、社交媒体等现代Web应用的数据采集,例如淘宝的商品列表页。通过Selenium结合显式等待策略,可以稳定抓取商品图片 阅读详情

相关推荐

超详细python实现爬取淘宝商品信息(标题、销量、地区、店铺等)

要搜索的商品的关键词KEYWORD = '衣服'# 数据库中要插入的表# MySQL 数据库连接配置,根据自己的本地数据库修改# 创建 MySQL 连接对象# 关闭自动测试状态显示 // 会导致浏览器报:请停用开发者模式# 把chrome设为selenium驱动的浏览器代理;# 窗口最大化# wait是Selenium中的一个等待类,用于在特定条件满足之前等待一定的时间(这里是15秒)。# 如果一直到等待时间都没满足则会捕获TimeoutException异常。

weixin_48266589的博客 3万+

Selenium+Scrapy爬取淘宝

好久不见,今天给大家分享如何用自动化工具selenium和scrapy框架来爬取淘宝。 爬取网站时候的坑! 刚开始爬的时候,就想着直接进入淘宝主页,然后用selenium工具自动一步步执行然后爬取到自己想得到的数据,然而!令我没想到的是,利用自动化工具可以对关键词进行抓取之类,但是很奇怪的是数据抓不下来,于是不得不对进入的链接进行修正。 通过观察得到了这样的网址['https://s...

BLUEHEART 3790

【爬虫】Python实现爬取淘宝商品信息(超详细)

项目基于Python的第三方库Selenium模拟浏览器运行、PyQuery解析和操作HTML文档,获取淘宝平台中某类商品的详细信息(商品标题、价格、销量、商铺名称、地区、商品详情页链接、商铺链接等),并基于第三方库openpyxl建立、存储于Excel表格中。# 全局变量count = 1 # 写入Excel商品计数# 启动ChromeDriver服务# 关闭自动测试状态显示 // 会导致浏览器报:请停用开发者模式# 把chrome设为selenium驱动的浏览器代理;# 窗口最大化。

qq_46315152的博客 4万+

从输入url到页面返回的全过程

从输入url到页面返回的全过程。 1.我们输入一个域名:www.baidu.com,然后点击确认; 2.浏览器查找域名的IP地址。查找过程如下: 首先是浏览器缓存,浏览器会缓存DNS记录一段时间; 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用,获取系统缓存中的记录; 然后是路由器缓存,路由器一般会有自己的缓存; 如果前者都没有找到,就需要从本地域名服务器开始进行DNS查询了。详细的DNS查询过程我在DNS工作原理及过程中讲到过。 3.现在浏览...

阿门阿窗一颗葡萄树 300

Python爬虫实战:采集淘宝商品信息并导入EXCEL表格

文章目录 前言 一、解析淘宝URL组成 二、查看网页源码并用re库提取信息 1.查看源码2.re库提取信息 三:函数填写 四:主函数填写 五:完整代码 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不知道如何去学习更加高深的知识。 那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!??¤ QQ群:7

Python_kele的博客 1795

达梦数据守护集群监视器详解与应用指南

主库/备库:承担读写和只读服务的数据节点Redo 日志:记录数据库变更的核心日志Redo 日志传输:主备库间的日志同步机制Redo 日志重演:备库重做日志的应用过程守护进程 (dmwatcher):实例级别的监控和管理组件监视器 (dmmonitor):集群级别的监控和管理工具监视器作为数据守护系统的重要组成部分,提供了集群监控、故障管理和状态确认等关键功能。达梦数据守护集群监视器是维护数据库高可用性的关键工具。

huanhuanzhou blog 1058

JavaScript案例:编写一个js函数,提取url字符串中的参数,并以key-value的形式返回到一个对象结构中

编写一个js函数,提取url字符串中的参数,并以key-value的形式返回到一个对象结构中

lyq0011的博客 1098

[附源码]计算机毕业设计JAVA网上花店系统

附源码]计算机毕业设计JAVA网上花店系统项目运行环境配置:(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat。

ssm毕设程序设计 2443

请用js写一个函数,实现获取浏览器url中查询字符串中的参数并返回一个数组...

<script>   console.log(getUrlArr());   function getUrlArr() {     var arr = [];     var url = "http://192.1.1.1:1111/test.html?a=1&b=2&c=3&d=4"; ...

weixin_30932215的博客 1356

ESP-01S使用micropython,利用Thonny烧写固件

在家舒服的太久了,想学习点新的东西,这次看上了ESP8266系列的联网设备,想自己做点小玩意出来耍耍,下面跟我一起来学习吧。本篇主要记录固件的烧写及测试。Thonny下载链接不算难,但是网上资源较少。也是提醒自己不要忘记这个步骤,记录一下,也分享给和我一样开始接触的小伙伴,加油加油,万事开头难。

weixin_43422072的博客 1692

74LS161/48 交通灯控制系统:30-5-20-5 时序逻辑电路 Multisim 仿真验证

本文详细解析了基于74LS161/48芯片的交通灯控制系统设计,通过Multisim仿真验证30-5-20-5时序逻辑电路。从系统架构搭建、状态机实现到波形分析,提供全流程操作指南与典型问题排查方法,助力数字电路课程设计高效完成。

weixin_26742753的博客 377

scrapy+selenium爬取淘宝商品信息

本文仅作经验分享,不做商业用途,如涉及权利问题,请通知删除。 scrapy+selenium爬取淘宝商品信息建立scrapy项目对目标网站进行分析selenium模拟登录合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTe...

triangle的技术博客 4341

ZYNQ千兆网UDP通信实战:从Vivado配置到LWIP优化全流程(附避坑指南)

本文详细介绍了在ZYNQ平台上实现千兆以太网UDP通信的全流程,包括Vivado硬件配置、LWIP协议栈优化及实战代码示例。通过关键参数调整和性能优化,系统吞吐量可提升至850Mbps以上,适用于高速网络通信场景。

weixin_29161785的博客 230

Python爬虫入门到实战:18个案例详解淘宝抖音数据抓取

网络爬虫是一种自动化程序,用于从互联网上抓取和提取数据。其核心原理是模拟浏览器行为,向目标服务器发送HTTP请求,获取HTML、JSON等格式的响应,再通过解析技术提取结构化信息。这项技术对于数据分析、市场研究、信息聚合等领域具有重要价值,能够高效地获取公开网络数据。在Python生态中,requests库负责发送网络请求,而BeautifulSoup和lxml则用于解析HTML文档,这是构建爬虫的基础技术组合。针对动态加载的网站,如淘宝、抖音等电商和社交媒体平台,则需要借助Selenium等工具模拟浏览器

weixin_30425949的博客 415

FISCO BCOS 系列(一)—— 搭建第一个区块链网络&配置控制台指南

本文详细介绍了FISCO BCOS区块链网络的搭建与配置过程,包括环境准备、单机四节点网络搭建、控制台配置使用等核心内容。从系统要求、依赖安装开始,逐步指导如何通过脚本快速搭建区块链网络,配置控制台连接,并演示了账户管理、合约部署调用等基础操作。同时提供了多节点网络配置、常见问题解决方案以及生产环境安全建议,为开发者提供了从入门到进阶的完整指南。

分享AI、区块链技术及应用,未来已来 808

锂电池寿命预测 | Pytorch实现基于Transformer 的锂电池寿命预测(NASA数据集)

锂电池寿命预测 | Pytorch实现基于Transformer 的锂电池寿命预测(NASA数据集)

算法如诗的博客 5584

淘宝商品数据爬取并分析数据

1、爬取数据的意义 对电商来说,获取和研究网络客户的需求及操作习惯数据对商业发展有重要指导意义。比如淘宝网是亚太地区较大的网络零售、商圈,由阿里巴巴集团在2003年5月创立。淘宝网是中国深受欢迎的网购零售平台,拥有近5亿的注册用户数,每天有超过6000万的固定访客,同时每天的在线商品数已经超过了8亿件,平均每分钟售出4.8万件商品。因此,如果能利用网页爬取数据技术获取数据并对各种数据进行统计分析,对后续淘宝的发展具有指导意义。 2、抓取的内容 包括:商品名称test、商品价格price、付款人数dea

weixin_44798044的博客 2万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

获取url中的参数值(支持传入数组)

调用方法:getQueryString(String|Array) 传入一个字符串时,返回url中对应的参数值,如果没有对应的参数名则返回null 传入一个数组时,返回一个数组,保存着对应的字符串,如果参数名不存在则保存为‘’空字符串 示例: 代码如下: function getQueryString(name) { if(typeof(name)=='string'){...

qq_40299140的博客 3609

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

返回淘宝url地址

from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC impo...

天上掉下两毛钱 1298

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

获取 url 参数

获取 url 中的参数 1. 指定参数名称,返回该参数的值 或者 空字符串 2. 不指定参数名称,返回全部的参数对象 或者 {} 3. 如果存在多个同名参数,则返回数组 function getUrlParam(sUrl, sKey) {     var   result={};     sUrl.replace(/\??(\

ScutKevinYzy的博客 352

JS笔试题(3)【阿里巴巴】

1、请编写一个JavaScript函数 parseQueryString,它的用途是把URL参数解析为一个对象,如: var url = “http://www.taobao.com/index.php?key0=0&key1=1&key2=2.....” var obj = parseQueryString(url); alert(obj.key0)? // 输出0答案: function

Bidding 5705

Ajax学习笔记

小白学习ajax

qq_64686768的博客 512

一篇文章教会你用Python爬取淘宝海量信息,把淘宝商品整理成一个表格

最近看了爬虫又新做了个小作品,来瞅瞅吧~~~因为最近想买ipad,所以想要尝试一下吧 淘宝 上所有ipad商品做一个统计,把所有ipad商品的信息集合到一个excel里,那么使用爬虫这个程序也是可以实现的。

bagell的博客 2670

python爬虫中的scrapy爬取淘宝前60条商品的相关信息(对淘宝多级页面的爬取详细解读)

** 一,整体规划: ** 1,要爬取的网站是:https://list.tmall.com/search_product.htm?q=Ůװ 2,要爬取的信息是:商品名称,商品价格,商品链接,店铺名称,店铺信息 (good_name, good_price, good_url, shop_name, shop_url) 二,确定网站可以被访问,相关信息可以被提取 1,打开cmd窗口。输入 ...

weixin_44841312的博客 1万+

Python爬虫项目实战之爬取淘宝商品数据

Python爬虫可以用于爬取淘宝商品数据,并对这些数据进行数据分析。下面是一个简单的示例,展示如何使用Python爬取淘宝商品数据并进行数据分析。

程序员鑫港的博客 4532
上一篇: C8051F236基本外设配置
下一篇: 使用Scrapy爬取电影链接
shu_8708
博客等级 码龄10年 45粉丝 40原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值