博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爬淘宝的商品信息 (上)
阅读量:4331 次
发布时间:2019-06-06

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

爬淘宝的商品信息

现在想去爬淘宝上某商品的累计评论数和交易量,如下图所示

淘宝商品

轮子选python的Scrapy,据说很厉害,第一次用,不太懂。

环境的配置

  1. 首先安装最新版的Ananconda,我这里安装完后显示python版本为3.61
  2. 安装scrapy, 直接使用命令conda install scrapy即可安装scrapy,要注意了,需要电脑上安装好
  3. 然后下载, 放在解压后,将exe文件放在路径C:\ProgramData\Anaconda3\Scripts

项目创建

首先是使用scrapy startproject TB创建一个工程项目,然后cd TB,进入TB目录下,使用命令scrapy genspider taobao taobao.com创建你的爬虫。至此,整个项目搭建完毕,接下来,就是进行代码编写了

代码编写

首先是修改settings.py中的内容,选择不遵守robots.txt协议

# Obey robots.txt rulesROBOTSTXT_OBEY = False

因为淘宝开启了robots.txt协议,而scrapy是默认遵守robots.txt协议的,所以,一开始是拒绝爬淘宝的

接下来,修改items.py文件如下所示

# -*- coding: utf-8 -*-# Define here the models for your scraped items## See documentation in:# http://doc.scrapy.org/en/latest/topics/items.htmlimport scrapyclass TbItem(scrapy.Item):    # define the fields for your item here like:    # name = scrapy.Field()    trade, comments = scrapy.Field(), scrapy.Field()    item_id = scrapy.Field()

此中内容,表是我们要爬取得到的东西,主要包括商品id,商品累计评价,商品交易量

接下来,编写蜘蛛了

打开spiders下的taobao.py文件修改如下

# -*- coding: utf-8 -*-import scrapyfrom TB.items import TbItemfrom scrapy import Request, Selectorfrom selenium import webdriverfrom urllib.parse import urlparse,parse_qsclass TaobaoSpider(scrapy.Spider):    name = "taobao"    allowed_domains = ["taobao.com"]    start_urls = ['https://item.taobao.com/item.htm?spm=a230r.1.14.75.4BT18i&id=538224140282&ns=1&abbucket=8',                  'https://item.taobao.com/item.htm?spm=a230r.1.14.3.PPDEVC&id=547701746911&ns=1&abbucket=8']    def __init__(self, *args, **kwargs):        super(TaobaoSpider, self).__init__(*args, **kwargs)        self.driver = webdriver.Chrome()    def parse(self, response):        self.driver.get(response.url)        self.driver.implicitly_wait(30)        selector = Selector(text=self.driver.page_source)        for sel in selector.xpath('//*[@id="J_Counter"]'):            item = TbItem()            item['comments'] = sel.xpath('//*[@id="J_RateCounter"]/text()').extract_first()            item['trade'] = sel.xpath('//*[@id="J_SellCounter"]/text()').extract_first()            # item['item_name'] = sel.xpath('//*[@id="J_Title"]/h3/text()').extract_first()            item['item_id'] = parse_qs(urlparse(response.url).query, True)['id'][0]            yield item    def __del__(self):        if self.driver is not None:            self.driver.quit()

函数parse里面主要的工作是利用selenium调用chrome,模拟人操作浏览器访问淘宝,这样能够解决淘宝的动态加载问题

转载于:https://www.cnblogs.com/crackpotisback/p/6733480.html

你可能感兴趣的文章
java学习笔记④MySql数据库--01/02 database table 数据的增删改
查看>>
两台电脑如何实现共享文件
查看>>
组合模式Composite
查看>>
程序员最想得到的十大证件,你最想得到哪个?
查看>>
我的第一篇CBBLOGS博客
查看>>
【MyBean调试笔记】接口的使用和清理
查看>>
07 js自定义函数
查看>>
jQueru中数据交换格式XML和JSON对比
查看>>
form表单序列化后的数据转json对象
查看>>
[PYTHON]一个简单的单元測试框架
查看>>
iOS开发网络篇—XML数据的解析
查看>>
[BZOJ4303]数列
查看>>
一般处理程序在VS2012中打开问题
查看>>
C语言中的++和--
查看>>
thinkphp3.2.3入口文件详解
查看>>
POJ 1141 Brackets Sequence
查看>>
Ubuntu 18.04 root 使用ssh密钥远程登陆
查看>>
Servlet和JSP的异同。
查看>>
虚拟机centOs Linux与Windows之间的文件传输
查看>>
ethereum(以太坊)(二)--合约中属性和行为的访问权限
查看>>