EX5 | 用Python爬取京东商品文胸的评论并保存

欢迎关注微信号:student_Shang
小编是985院校小硕士一枚,欢迎关注,持续更新中~

京东商品搜索关键字胸罩

哈喽,大家好~

在本次推送中,以京东商品搜索中关键字胸罩作为采集目标,重点采集相关数据,在本地根目录下以
.xls 的形式进行存储。

1 准备工作

在本次爬虫开始之前,请确保已经安装好了第三方 requests 库、BeautifulSoup 库、re 库、xlwt 库等。如果没有安装,请使用cmd打开命令行界面,并逐行键入以下代码:

pip install requests
pip install bs4
pip install re
pip install xlwt

2 抓取分析

本次抓取的信息内容稍有难度,当然原理还是不变的。只需要利用 requests 库向指定网站发送请求,获取服务器传来的响应,随后利用 BeautifulSoup 库完成对网页代码的解析,同时为了进一步防止触发反爬虫机制。具体分析如下:
首先,我们本次爬取的网站是

https://search.jd.com/Search?keyword=%E8%83%B8%E7%BD%A9&enc=utf-8&qrst=1&rt=1&stop=1&spm=2.1.1&vt=2&psort=4&click=0

右键点击 检查 按钮,或者直接按下 F12 进入开发者界面,点开 Network 一栏,并按下 F5 刷新按钮,必要时请按下 CTRL + F5 组合键完成页面的刷新。随后我们点击刷新后出现的第一个子栏目。如下图所示:

观察list表单中的相关信息

这里我们可以看到,网站请求的 Request URL ,再往下翻观察 Request Headers信息,为了避免触发反爬虫机制,我们要尽量把爬虫程序做的更像是人在浏览网页。

接下来便是对网页的提取与保存,我们开始今天的爬虫工作。

3 爬取信息与保存

在安装完毕我们在一开始介绍的第三方库后,这里我们需要首先导入这些文件才能够进行后续的操作。

from bs4 import BeautifulSoup
import requests
import re
import xlwt

3.1 网页请求头的设置

为了使爬虫程序模拟的更像人在操作,因此我们添加了请求过程中一些比较重要的请求头信息,并将其整理成一个请求函数,具体如下:

def get_page(url):
    headers = {
        'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
        'referer':'https://search.jd.com/search?keyword=BRA&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=BRA&cid3=1364&psort=4',

    }
    r = requests.get(url,headers=headers)
    return r

接下来我们便开始网页的爬取工作。

3.2 京东商品搜索关键字胸罩商品评论的爬取与保存

首先,我们需要对单个网页的信息进行爬取,通过对响应代码的分析,我们利用 BeautifulSoup 库完成对代码的解析。同时将其定义为 get_comments_url() 函数。具体如下:

def get_comments_url():
    good_id = []
    goods_url = 'https://search.jd.com/Search?keyword=%E8%83%B8%E7%BD%A9&enc=utf-8&qrst=1&rt=1&stop=1&spm=2.1.1&vt=2&psort=4&click=0'
    page_content = get_page(goods_url)
    soup = BeautifulSoup(page_content.content)
    goods_id = soup.find_all("li", class_="gl-item")
    for pid in goods_id:
        good_id.append(pid['data-sku'])

    f = xlwt.Workbook()
    sheet1 = f.add_sheet('bra', cell_overwrite_ok=True)
    row0 = ["size", "comment", "time"]
    # 写入第一行
    for j in range(0, len(row0)):
        sheet1.write(0, j, row0[j])
    k = 0

    for product in good_id:
        print('正在爬取第{}个商品'.format(k + 1))
        for i in range(100):
            print('正在下载{}页'.format(i+1))
            url = 'https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv1538&productId={}&score=0&sortType=5&page={}&pageSize=10&isShadowSku=0&fold=1'.format(product,i)

            r = get_page(url)
            if r.status_code == 200:
                size = re.findall(r'"productSize":"(.*?)"', r.text)
                comment = re.findall(r'"content":"([^<]*?)"', r.text)
                time = re.findall(r'[^>]","creationTime":"([^<]*?)"', r.text)


            for j in range(10):
                sheet1.write(k * 1000 + i *10 + j + 1, 0, size[j][-1])
                sheet1.write(k * 1000 + i *10 + j + 1, 1, comment[j])
                sheet1.write(k * 1000 + i *10 + j + 1, 2, time[j])
        k += 1
        f.save('bra.xls')

单个网页的内容收集完毕后,我们需要获取如何跳入下一页。这里我们发现,通过更改不同页数的网页 URL 之间的 pageNum 参数,可以实现网页之间的切换。考虑到需要抽取不同的样本,因此我们每个商品只获取前1000个数据。

3.3 启动程序

最后,键入以下代码便能够实现整个程序的运行:

if __name__ == "__main__":
    get_comments_url()
    print('下载完成')

4 总结与展望

本次爬虫程序在编写过程中,因为对网页的解析采用的是字符串的形式,最佳的解析方式便是采用正则表达式完成解析。在爬虫程序完成后,会在爬虫文件保存的根目录下保存 .xls 的文件。此外,小编对这过万的数据通过 EXCEL 软件完成了数据的统计,其中惊人的发现...

惊人的发现...

微信公众号:Python一号通
关注可了解更多的爬虫教程及机器学习内容。
问题或建议,请公众号留言

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,219评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,363评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,933评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,020评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,400评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,640评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,896评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,597评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,327评论 1 244
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,581评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,072评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,399评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,054评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,849评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,672评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,585评论 2 270

推荐阅读更多精彩内容