python爬取京东评论分析_Python爬取京东商品评价(动态⽹
页的爬取)
之后我们到⽹页的源码并随便复制⼀句评论,在⽹页源码中查,发现并没有到评论内容,说明jd的评论页⾯并⾮静态⽹页
AJAX:AJAX的全称是Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。ajax不是新的编程语⾔,⽽是⼀种使⽤现有标准的新⽅法。ajax是与服务器交换数据并更新部分⽹页的艺术,在不重新加载整个页⾯的情况下。ajax是⼀种在⽆需重新加载整个⽹页的情况下,能够更新部分⽹页的技术。ajax是⼀种⽤于创建快速动态⽹页的技术。通过在后台与服务器进⾏少量数据交换。ajax可以使⽹页实现异步更新。这意味着可以在不重新加载整个⽹页的情况下,对⽹页的某部分进⾏更新。⽽传统的⽹页(不使⽤ajax)如果需要更新内容,必须重载整个⽹页⾯。
既然确定是AJAX的⽅式加载,我们可以直接打开chrome的调试⼯具,在network中的XHR和JS中寻保存有评论的⽂件。注意这⾥必须先下拉到评论页⾯使数据⽂件加载下来,否则会不到加载的数据⽂件
我们可以通过两种⽅式来查包含评论的⽂件:1.可以在js和XHR中寻comment关键字,查看是否有⽂件符合要求,并对符合要求的结果筛选2.评论在页⾯的最下⽅,根据⽂件的加载顺序可以⼤致了解到会在后⾯,从后⾯开始即可
最终确定js⽂件,如下图所⽰
这样我们就可以确定评论的请求地址并开始抓取
import requests
import json
url='item.jd/52297931949.html'
jsonurl='club.jd/comment/productPageComments.action?
productId=52297931949&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1'
(jsonurl).text
#print(html)
josntext=json.loads(html)
comments= josntext['comments']
for comment in comments:
content = comment['content']
print(content)
得到所需要的json⽂件后就可以将数据存到sqllite中了sqllite是python内置的关系型数据库,具有以下优点:不需要⼀个单独的服务器进程或操作的系统(⽆服务器的)。
SQLite不需要配置,这意味着不需要安装或管理。
⼀个完整的SQLite数据库是存储在⼀个单⼀的跨平台的磁盘⽂件。
SQLite是⾮常⼩的,是轻量级的,完全配置时⼩于 400KiB,省略可选功能配置时⼩于250KiB。
SQLite是⾃给⾃⾜的,这意味着不需要任何外部的依赖。
SQLite事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
SQLite⽀持 SQL92(SQL2)标准的⼤多数查询语⾔的功能。
SQLite使⽤ ANSI-C 编写的,并提供了简单和易于使⽤的 API。
SQLite 在 UNIX(Linux, Mac OS-X, Android,iOS)和 Windows(Win32, WinCE,WinRT)中运⾏。
python操作SQLite流程与连接其他的数据库相同,⼤概分为以下五步
通过sqlite3.open()创建与数据库⽂件的连接对象connection;
通过connection.cursor()创建光标对象cursor;
通过ute()执⾏SQL语句;
通过connectionmit()提交当前的事务,或者通过cursor.fetchall()获得查询结果;
通过connection.close()关闭与数据库⽂件的连接
这⼀部分代码如下所⽰
linux系统硬盘分区详解t("comments.db")#建⽴连接,数据库存在时,直接连接;不存在时,创建相应数据库#新建⼀张表京东python入门教程
亚洲高清砖码区2022幼童
(ID text PRIMARY KEY NOT NULL,
comment text );''')
#注意sql语句中使⽤了格式化输出的占位符%s和%d来表⽰将要插⼊的变量,其中%s需要加引号''
for comment in comments:
sql = "insert into Comments_jd(ID,comment) values('%s','%s')" % (comment['id'],comment['content']) ute(sql)connmit()
# 关闭数据库连接
conn.close()
之后检查以下数据是否有问题:
t("comments.db")
cursor = ute("select * from Comments_jd")
for row in cursor:
print('ID = ', row[0], ' Comment = ', row[1])
得到的结果如下图所⽰
image.png
这样整个流程就搞定了
最终的代码如下:
import requests
import json
import sqlite3
网页制作的步骤是什么
def get_comments(good_id):
#good_url_template = 'item.jd/{}.html'.format(good_id)
jsonurl='club.jd/comment/productPageComments.action?productId=
汇编教程下载{}&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1'.format(good_id)
(jsonurl).text
return html
def data_stored(html):
conn = t("comments.db") # 建⽴连接,数据库存在时,直接连接;不存在时,创建相应数据库# 新建⼀张表
(ID text PRIMARY KEY NOT NULL,
comment text );''')
josntext=json.loads(html)
comments= josntext['comments']
#注意sql语句中使⽤了格式化输出的占位符%s和%d来表⽰将要插⼊的变量,其中%s需要加引号''
结构体类型的指针怎么理解
for comment in comments:
sql = "insert into Comments_jd(ID,comment) values('%s','%s')" % (comment['id'],comment['content']) ute(sql)
connmit()
# 关闭数据库连接
if __name__ == '__main__':
html=get_comments(str(52297931949)) data_stored(html)
后续准备对获取的数据进⾏进⼀步的分析