文章目录

  • 爬取京东关键词搜索商品及具体参数和评论
    • 查看京东关键词搜索,分析其网址各部分代表的意义,选取特定分类和时间区间进行爬取
    • 解析网页内容,查看商品参数的位置;
    • 筛选所需数据,输出并保存,尝试输出对齐

爬取京东关键词搜索商品及具体参数和评论

一个课堂作业,用requests,BeautifulSoup等模板爬取京东关键词搜索商品及具体参数和评论,完整代码在结尾。

查看京东关键词搜索,分析其网址各部分代表的意义,选取特定分类和时间区间进行爬取


分析url结构,可以发现京东搜索给定笔记本电脑时,url结构为https://search.jd.com/Search?keyword=笔记本电脑,同时需要把关键词进行编码,因此使用urllib.parse.quote_plus()进行编码加入,具体实现如下:

keyword = "笔记本电脑"
start_url = "https://search.jd.com/Search?keyword="+urllib.parse.quote_plus(keyword) + "&"+keyword

同时page的值为每一页的值*2+1,因此我们使用一个for循环来爬取我们所需要足够多的数据

for i in range(4):url = start_url + "page=" + str(2*i+1)#print(url)html = getHTMLText(url)

找到网站后就使用我们的通用爬虫框架,进行网页数据爬取

def getHTMLText(url):headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}try:r = requests.get(url,headers = headers)r.encoding = r.apparent_encodingreturn r.textexcept:return ""

解析网页内容,查看商品参数的位置;

分析网页内容后,我们只可以在网页上找到商品对应的url,价格和商品名称,因此我们打开商品对应的url进行进一步的查找

查看对应商品的源代码,找到我们想要的商品具体参数

现在寻找商品网站的评论,可以发现每次在我们点击商品评论后,对应网站都会对一个网站进行get请求,因此我们查看这个网站可以发现我们所需要的评论,至此爬虫所需信息的网页框架和信息都已经找到,接着就是用代码进行实现了

筛选所需数据,输出并保存,尝试输出对齐

import requests
from bs4 import BeautifulSoup
import bs4
import re
import urllib.parse
from pandas.core.frame import DataFrame
import json
import time
import random
def getHTMLText(url):headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}try:r = requests.get(url,headers = headers)r.encoding = r.apparent_encodingreturn r.textexcept:return ""
def fillUnivList(price_set,name_set,product_ID_set,html):soup = BeautifulSoup(html, "html.parser")prices = soup.find_all('div',class_ = 'p-price')names = soup.find_all('div',class_ = 'p-name p-name-type-2')product_IDs = soup.find_all('li',class_ = 'gl-item')for price in prices:price = price.text.split()price_set.append(price[0])for name in names:name = name.find_all('em')[0]name = name.textname_set.append(name)for product_ID in product_IDs:product_ID_set.append(product_ID['data-sku'])return ""
def  intro_product(intro_product_id_set,intro_product_key_set,product_id):url = "https://item.jd.com/"+str(product_id)+".html"html = getHTMLText(url)soup = BeautifulSoup(html,"html.parser")li = soup.find_all('ul',class_ = 'parameter2 p-parameter-list')for tr in li:tr = tr.text.strip('\n')print(tr)tr =re.split(r'[:\n]',tr)#print(tr)'''for i in range(len(tr)):if i % 2 == 0:intro_product_id_set.append(tr[i])else:intro_product_key_set.append(tr[i])'''
#获取商品的价格,名称和编号
price_set = []
name_set  = []
product_ID_set = []
keyword = input("爬取词汇:")
start_url = "https://search.jd.com/Search?keyword="+urllib.parse.quote_plus(keyword) + "&"
#print(start_url)
for i in range(4):url = start_url + "page=" + str(2*i+1)#print(url)html = getHTMLText(url)fillUnivList(price_set,name_set,product_ID_set,html)
#    printUnivList(uinfo,20)
data = {"价格(¥)":price_set,"名称":name_set}
data = DataFrame(data)
data.to_csv('爬取关键词:'+keyword+'结果'+'.csv')
#输出每一件商品的评论
#url = url1 + product_ID + url2 + page + url3
url1 = "https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId="
url2 = "&score=0&sortType=5&page="
url3 = "&pageSize=10&isShadowSku=0&rid=0&fold=1"
product_num = len(name_set) #商品数目
pinglun_page_num = 1 #输出评论页数
content_set1 = []
for product in range(product_num):print("商品名称")print(name_set[product])print('-'*59)intro_product_id_set = []intro_product_key_set = []print("商品参数")intro_product(intro_product_id_set,intro_product_key_set,product_ID_set[product])for i in range(pinglun_page_num):url = url1 + product_ID_set[product] + url2 + str(i) + url3#print(intro_product_set)print('-'*59)print(url)callback='fetchJSON_comment98'html = getHTMLText(url)#print(html)data = html.replace(callback,'')  # 发现多出来的字符串是url中的callback参数,data = data.replace('(','')data = data.replace(')','')data = data.replace(';','')data = json.loads(data)  #将处理的数据进行解析#print(data) # 打印下来user_id_set = []content_set = []creationTime_set = []for user in data['comments']:print('评论者:'+str(user['id']))print('发表时间:'+str(user['creationTime']))print()print(user['content'])print('-'*59)user_id_set.append(str(user['id']))content_set.append(user['content'])creationTime_set.append(user['creationTime'])content_set1.append(content_set)print('*'*59)time.sleep(random.randint(0,9))#print(intro_product_id_set)#print(intro_product_key_set)#print(len(intro_product_id_set),len(intro_product_key_set))'''data = {"商品参数名":intro_product_id_set,"商品参数值":intro_product_key_set}data = DataFrame(data)data.to_csv('爬取'+name_set[product]+'参数结果'+'.csv')data = {"user_id":user_id_set,"发表时间":creationTime_set,"评论":content_set}data = DataFrame(data)data.to_csv('爬取'+name_set[product]+'评论结果'+'.csv')'''#json_data = json.loads(html.text)
#    print(html['content'])
#    printUnivList(uinfo,20)#data = {"商品名":name_set[0:product_num],"商品参数":name_set,"评论":}
#data = DataFrame(data)
print(len(content_set1))
data = {"价格(¥)":price_set[0:product_num],"名称":name_set[0:product_num],"评价":content_set1}
data = DataFrame(data)
data.to_csv('爬取关键词:'+keyword+'.csv')

最终可以发现,我们的保存结果如下图所示

python爬虫 京东关键词搜索商品及具体参数和评论相关推荐

  1. 淘宝京东拼多多抖音1688苏宁淘特等关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)

    淘宝京东拼多多抖音1688苏宁淘特等关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)代码对接如下: 1.公共参数 名称 类 ...

  2. 淘宝拼多多抖音1688苏宁淘特京东等关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)

    淘宝拼多多抖音1688苏宁淘特京东等关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)代码对接如下: 1.公共参数 名称 类 ...

  3. 淘宝拼多多抖音1688苏宁淘特京东等平台关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)

    淘宝拼多多抖音1688苏宁淘特京东等平台关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)代码对接如下: 1.公共参数 名称 ...

  4. 淘宝京东拼多多抖音淘特1688等多平台商品APP详情API接口(商品详情页面数据接口,商品销量接口,关键词搜索商品销量接口)

    淘宝京东拼多多抖音淘特1688等多平台商品APP详情API接口(商品详情页面数据接口,商品销量接口,关键词搜索商品销量接口)代码对接如下: 1.公共参数 名称 类型 必须 描述 key String ...

  5. 淘宝关键词搜索商品接口分析商品价格走势(商品列表接口,商品销量接口,商品价格接口,分类ID采集商品数据接口)接口代码对接教程

    淘宝关键词搜索商品接口分析商品价格走势(商品列表接口,商品销量接口,商品价格接口,分类ID采集商品数据接口)接口代码对接教程如下: 1.公共参数 名称 类型 必须 描述(接口教程wx199701080 ...

  6. 通过Python爬虫按关键词抓取相关的新闻

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途 如今各大网站的反爬机制已经可以说是到了丧心病狂的程度,比如大众点评的字符加密.微博的登录验证等.相比较而言,新闻网站的反爬机制 ...

  7. 拼多多关键词搜索商品详情分析接口(分类ID搜索精准商品数据)代码对接教程

    拼多多关键词搜索商品详情分析接口(分类ID搜索精准商品数据)代码对接教程如下: 1.公共参数 名称 类型 必须 描述(接口代码教程wx19970108018) key String 是 调用key(必 ...

  8. python 爬虫-京东用户评论数据和用户评分

    python 爬虫-京东用户评论数据和用户评分 在京东页面查找(例如:oppo r15),选择第一个商品点击进入. 点击第一个评论页面: 点击第二个评论页面: 第三个评论页面: 发现第二页和第三页的网 ...

  9. 关键字搜索aliexpress商品API接口(速卖通关键词搜索商品接口)

    关键字搜索aliexpress商品API接口(速卖通关键词搜索商品接口)代码对接如下: 1.公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中,点击 ...

最新文章

  1. android studio网上订餐软件_直播软件OBS的使用
  2. celery中间件:broker
  3. nginc+memcache
  4. shell中基本正则表达式的元字符
  5. MySQL 事务到底是隔离还是不隔离?
  6. Maven下载安装与配置环境变量与配置本地仓库
  7. 跟JBPM学设计模式之适配器模式
  8. 【Java】灵活使用自定义注解和反射
  9. 笔记本显示网络电缆被拔出怎么解决_电脑显示“网络电缆被拔出”怎么办?
  10. GLSL Core Tutorial – Pipeline (OpenGL 3.2 – OpenGL 4.2)
  11. Cisco(54)——STP理论(2)
  12. 鱼之死,越狱章鱼和雾霾黑客
  13. 计算机操作系统教程徐甲同pdf,《操作系统实践教程》.pdf
  14. 三酷猫学python_python学习第二期
  15. 木瓜从林。。。。。。。。。。。。。。。。。
  16. C语言实现人民币小写转大写
  17. 检查并杀死mysql锁死的进程
  18. Tiny6410学习移植usb无线网卡(一)
  19. 福建厦门双十计算机竞赛,22人夺一等奖!恭喜厦门一中、双十中学、实验中学...
  20. 毕业两年,一年工作经验,一个月拿下腾讯T4 offer

热门文章

  1. Pinbox 一款极简主义风格的网络收藏夹
  2. CSS中经典的双飞翼布局(
  3. java多项式加法与乘法_java多项式加减法
  4. 李沐精读论文:MAE 《Masked Autoencoders Are Scalable Vision Learners》
  5. 综述:用于可靠的fMRI测量的策略
  6. 7 客户端认证方式 之 client_secret_jwt
  7. Python repr函数——学习笔记
  8. 上海相会 | 冒志鸿与丁磊畅谈ArcBlock未来宏图
  9. 第十一天 乐在其中-Android与远端之JDBC
  10. 【Vuforia】最佳实践:支持作为模型目标(Model Targets)的对象和CAD模型