1、爬虫
- 定义:爬取网络数据的虫子(Python程序)
- 实质:模拟浏览器的工作原理,向服务器请求相应的数据
2、浏览器的工作原理
登录网址URL ——>浏览器向服务器发送请求——>服务器收到请求后,会响应对应的数据给浏览器。
- 浏览器还起到了翻译数据的作用,将代码翻译成界面
3、爬虫的工作原理
代替浏览器向服务器发送请求
实操训练:
需求:分析京东上:销量最高的鞋子,最受欢迎的颜色以及鞋码
做题:
鞋子的销售数据
- 通过评论数据间接得到鞋子的销售数据
评论区内容背后的URL
- (1)鼠标右击选择检查,打开程序员调试窗口,点击network(网络)
- (2)刷新当前页面
- (3)复制一小段评论区内容,然后在程序员调试窗口点击放大镜,粘贴
- (4)点击刷新小圆圈,查找
- (5)点击查询结果的第二行,跳转到对应的请求
- (6)点击Headers,找到Request URL即几评论区数据背后的UR
第一步:爬取数据:
- (1)引入Python工具包requests
- (2)使用工具包中的get方法,向服务器发起请求
- (3)打印输出请求回来的数据(print语法)
-
import requests resp = requests.get('https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100010560687&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1') print(resp.text)
第二步:解析数据:
- (1)打开网页工具 www.json.cn
- (2)将数据整理成Json格式:以大括号开头和结尾
- (3)找到目标数据值对应的名字
第三步:利用Python replace语法
- replace为替换的意思,可以使用replace把任何不想要的数据替换成一个新值
引入Python整理数据的工具包 json、获取鞋子颜色及鞋码数据
import requests
import json
re = requests.get('https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100010560687&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1')
con = re.text
re1 = con.replace('fetchJSON_comment98(','').replace(');','') # replace替换操作,将前缀后缀不需要的部分删除
json_data = json.loads(re1) # 将URL内的数据整理为json格式
comments = json_data['comments'] # 选中comments的内容
for item in comments:
color = item['productColor'] # 获取所comments中的所有颜色,大小
size = item['productSize']
print(color)
print(size)
第三步、引入openpyxl工具包存储数据
-
(1)创建一个Excel表格
-
(2)创建一个sheet
-
(3)在sheet里面保存数据
-
(4)把表格保存在一个磁盘里
import requests
import json
import openpyxl # 使用openpyxl工具包
wk = openpyxl.Workbook()
sheet = wk.create_sheet() # 创建表格
re = requests.get('https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100010560687&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1')
con = re.text
re1 = con.replace('fetchJSON_comment98(','').replace(');','') # replace替换操作,将前缀后缀不需要的部分删除
json_data = json.loads(re1) # 将URL内的数据整理为json格式
comments = json_data['comments'] # 选中comments的内容
for item in comments:
color = item['productColor'] # 获取所comments中的所有颜色,大小
size = item['productSize']
print(color)
print(size)
#sheet.append([color,size]) # 第一列保存color的数据,第二列保存size的数据
#wk.save('data/余生-123456.xlsx') # 输入磁盘保存的路径