用scrapy框架做京东评论爬取

这里主要是来练习一下网络爬取技术,详情请看以下链接:

[爬虫]python最新爬取京东评论+词云图+LDA模型分析_哔哩哔哩_bilibili

[爬虫]python爬取京东商品数据+词云图LDA模型

首先scapy框架就不用多说了,这里的格式如下:

主要的操作在JDSpiders里面实现,接下来查看京东评论的网络结构,直接搜索评论,然后发现要获取的信息都在comments里面:

打开该api地址:

这里都是json格式的地址,要提取的信息(评论、地点、时间、昵称)如上

同时这里可以发现,翻页的时候只有page变化,所以构造url的时候只要将page从0到100循环即可(因为京东只能看到前100页评论)

接着直接写代码:

1、返回到items.py里面,填写获取的信息

class JdGoodsCommitItem(scrapy.Item):
    shop_id = scrapy.Field()
    content = scrapy.Field()
    creationTime = scrapy.Field()
    nickname = scrapy.Field()
    score = scrapy.Field()
    location=scrapy.Field()

2直接附上JDSpiders的代码

import scrapy
from jd.items import JdGoodsCommitItem
import json
from bs4 import BeautifulSoup
import requests
import re
from urllib.parse import urlencode
class JDSpiders(scrapy.Spider):
    name = 'JDSpiders'
    allowed_domains = ['www.jd.com']
    url_head = 'https://api.m.jd.com/?appid=item-v3&functionId=pc_club_productPageComments&client=pc&clientVersion=1.0.0&t=1710822302658&loginType=3&uuid=181111935.1006305175.1710410734.1710766111.1710822119.19&productId=100083659339&score=0&sortType=5'
    url_middle = '&page='
    url_end = '&pageSize=10&isShadowSku=0&fold=1&bbtf=&shield='

    def start_requests(self):
        for i in range(0, 2):
            #构造网页页面
            print("当前页面:", url)
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        json_string = response.text
        soup = BeautifulSoup(json_string, 'html.parser')
        #省略爬取商品操作
            yield item

3.修改pipeline下载地址:

    def process_item(self, item, spider):
        if spider.name == 'JDSpiders':
            # 将item转换为JdGoodsItemModel,然后保存到数据库
            row = pd.DataFrame({'nickname': item['nickname'], 'content': item['content'], 'score': item['score'],
                                'creationTime': item['creationTime'], 'location': item['location']}, index=[0])
            row.to_csv('dataset/jd_goods.csv', index=False, encoding='utf-8', mode='a', header=False)

        return item

同时settings里面的pipline别忘了改:

DOWNLOADER_MIDDLEWARES = {
   'jd.middlewares.JdDownloaderMiddleware': 543,
}

4.本人中间件用的是edge浏览器(你不用中间件也是可以的,因为只有翻页操作,不需要登录浏览器)

def spider_opened(self, spider):
        spider.logger.info('Spider opened: %s' % spider.name)

    webdriver = None
    def get_driver(self):
        if self.webdriver is None:
            options = webdriver.EdgeOptions()
            options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
            # 设置浏览器驱动程序路径
            driver = webdriver.Edge(options=options)
            self.webdriver = driver
        return self.webdriver

爬取到的数据如图:

码字不易,记得点个赞再走~

Scrapy 是一个用于爬取网站数据并提取结构化数据的 Python 框架。下面我将向你介绍如何使用 Scrapy 爬取京东商品信息。 1. 创建 Scrapy 项目 首先,我们需要在终端中使用以下命令创建一个新的 Scrapy 项目: ``` scrapy startproject jd_spider ``` 该命令会创建一个名为 jd_spider 的目录,其中包含 Scrapy 项目的基本结构。 2. 定义数据模型 接下来,我们需要定义一个数据模型来存储爬取到的数据。在 jd_spider 目录下,我们创建一个名为 items.py 的文件,并在其中定义一个 Item 类,用于存储商品信息。例如: ``` import scrapy class ProductItem(scrapy.Item): name = scrapy.Field() price = scrapy.Field() image_urls = scrapy.Field() images = scrapy.Field() ``` 该类定义了商品的名称、价格、图片 URL 和图片数据的字段。这些字段将在后面的爬虫中使用。 3. 编写爬虫Scrapy 中,爬虫是一个 Spider 类的子类,用于定义如何爬取和解析网页。在 jd_spider 目录下,我们创建一个名为 jd_spider.py 的文件,并在其中定义一个名为 JDSpider 的 Spider 类。例如: ``` import scrapy from jd_spider.items import ProductItem class JDSpider(scrapy.Spider): name = "jd" allowed_domains = ["jd.com"] start_urls = [ "https://search.jd.com/Search?keyword=python&enc=utf-8&suggest=2.def.0.V16&wq=python&pvid=d9c6d0cae4f94d9dbd62a3a30f8b5b27" ] def parse(self, response): products = response.xpath('//div[@id="J_goodsList"]/ul/li') for product in products: item = ProductItem() item['name'] = product.xpath('div/div[@class="p-name"]/a/em/text()').extract_first().strip() item['price'] = product.xpath('div/div[@class="p-price"]/strong/i/text()').extract_first() item['image_urls'] = [product.xpath('div/div[@class="p-img"]/a/img/@data-lazy-img').extract_first()] yield item ``` 该类定义了爬虫的名称、允许的域名和起始 URL。在 parse 方法中,我们使用 XPath 表达式提取商品信息,并生成 ProductItem 对象并 yield 出去。 4. 启动爬虫 在终端中切换到 jd_spider 目录,并使用以下命令启动爬虫: ``` scrapy crawl jd -o products.csv ``` 该命令会启动 jd 爬虫,并将爬取到的数据保存到名为 products.csv 的 CSV 文件中。 以上就是使用 Scrapy 爬取京东商品信息的基本步骤。当然,还有很多高级功能可以帮助我们更好地爬取和处理数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值