Scrapy框架爬虫项目:京东商城笔记本电脑信息爬取

本文介绍了一个使用Scrapy框架爬取京东商城笔记本电脑信息的项目。通过创建Scrapy项目,设置容器,编写爬虫,将数据写入MySQL数据库,并处理后续的动态页面问题。爬虫解析商品URL,提取详情信息,包括价格,同时记录遇到的反爬策略及解决方案。
摘要由CSDN通过智能技术生成

一、创建Scrapy项目

在cmd中输入一下指令创建一个新的scrapy项目及一个爬虫

scrapy startproject JD_Goods

cd JD_Goods

scrapy genspider -t basic goods jd.com

二、容器设置

在京东商城笔记本电脑分类下进入一个商品页面,在“”规格与包装”栏下可以看见该笔记本电脑的详细信息

经过筛选,在items.py下设置下列容器(忽略我的Chinglish命名法...):

    #商品名称
    name = scrapy.Field()
    #价格
    price = scrapy.Field()
    #链接
    link = scrapy.Field()
    #内存
    internalStorage = scrapy.Field()
    #CPU类型
    cpuType = scrapy.Field()
    #CPU型号
    cpuModel = scrapy.Field()
    #CPU速度
    cpuSpeed = scrapy.Field()
    #CPU核心
    cpuCore = scrapy.Field()
    #硬盘容量
    diskCapacity = scrapy.Field()
    #固态硬盘
    SSD = scrapy.Field()
    #显卡类型
    GCtype = scrapy.Field()
    #显示芯片
    GCcore = scrapy.Field()
    #显存容量
    GCcapacity = scrapy.Field()
    #尺寸
    size = scrapy.Field()
    #重量
    weight = scrapy.Field()

三、爬虫编写

整个项目写完后都用到了这些库,从头开始写的时候可以先一次性import完:

from JD_goods.items import JdGoodsItem
from scrapy.http import Request
import scrapy
import urllib.request
import urllib.error
import re
import json
import pymysql

       由于要得到笔记本电脑的详细信息需要进入每台笔记本电脑的单独的页面,所以我选择在第一次请求的时候将所有笔记本电脑的链接爬取到链表中。首先分析每一页的url规律,发现规律为:

url = "https://list.jd.com/list.html?cat=670,671,672&page=" + str(页码) + "&sort=sort_totalsales15_desc&trans=1&JL=6_0_0#J_main"

然后分析页面中包含末尾页数的信息,用正则表达式提取:

    def start_requests(self):
        #TOTAL为总页数
        url = "https://list.jd.com/list.html?    cat=670,671,672&page=1&sort=sort_totalsales15_desc&trans=1&JL=6_0_0#J_main"
        TOTAL = int(re.findall('<em>共<b>(.*?)</b>',urllib.request.urlopen(url).read().decode('utf-8','ignore'))[0])
        

所以用以下代码将url链接存入list中:

        self.links = []
        for i in range(1, 21):
            try:
                url = "https://list.jd.com/list.html?cat=670,6
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值