《python美团抓包》

《python美团抓包》

文章目录

  • 1、分析网页
  • 2、如何抓包
  • 3、json解析
  • 4、正式爬取信息
    • 4.1、 请求服务器
    • 4.2、通过reponse.json()命令查看json文件
    • 4.3、现在再分析每一页的ajax_url特点
    • 4.4、将爬取的数据保存到csv
  • 5、代码汇总

1、分析网页

美团商铺链接:https://www.meituan.com/meishi/193383554/
点击下一页,url链接没有发生变换,初步判断是ajax加载的数据,需要用抓包的方式来爬取数据。
《python美团抓包》_第1张图片

2、如何抓包

首先检查网页
找到自己需要的内容,如何找到自己需要的东西,注意Network中的Type(加载文件类型)和size(加载的文件大小),是文本文件还是音频文件还是图片根据type区分,其次观察文件大小。
《python美团抓包》_第2张图片
《python美团抓包》_第3张图片
将文件的的link address复制到浏览器可以加载文件内容。
《python美团抓包》_第4张图片
《python美团抓包》_第5张图片
在Preview中也可以查看到文件里是否有自己需要的东西。
《python美团抓包》_第6张图片

3、json解析

解析网站:https://www.json.cn/

《python美团抓包》_第7张图片

4、正式爬取信息

4.1、 请求服务器

import requests
# 格式化为字符串
ajax_url="https://www.meituan.com/meishi/api/poi/getMerchantComment?uuid=8ecdf9f4-b8dc-442b-805e-d6e95ef4d06d&platform=1&partner=126&originUrl=https%3A%2F%2Fwww.meituan.com%2Fmeishi%2F193383554%2F&riskLevel=1&optimusCode=10&id=193383554&userId=&offset=10&pageSize=10&sortType=1"
#设置浏览器代理,它是一个字典
headers_meituan={
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36"
}
# 请求源代码,向服务器发出请求
reponse=requests.get(url=ajax_url,headers=headers_meituan)
# 快捷键运行,Ctrl+Enter
print(reponse)

输出结果返回200,说明请求服务器成功
《python美团抓包》_第8张图片

4.2、通过reponse.json()命令查看json文件

《python美团抓包》_第9张图片
在json解析器中找到需要爬取的内容标签
《python美团抓包》_第10张图片
利用for循环爬出标签里面的内容

for item in reponse.json()["data"]["comments"]:
    name=item["userName"]
    comment=item["comment"]
    user_id=item["userId"]
    result=(name,user_id,comment)
    print(result)

输出结果
《python美团抓包》_第11张图片
这样就爬取了一页评论的信息了

4.3、现在再分析每一页的ajax_url特点

在这里插入图片描述
利用for循环,循环每一页的ajax_url

for num in range(0,381,10):
    ajax_url="https://www.meituan.com/meishi/api/poi/getMerchantComment?uuid=26ef241e-0867-4013-94f0-452bea9fab76&platform=1&partner=126&originUrl=https%3A%2F%2Fwww.meituan.com%2Fmeishi%2F193383554%2F&riskLevel=1&optimusCode=10&id=193383554&userId=&offset="+ str(num) +"&pageSize=10&sortType=1"
    
    print(ajax_url)

输出结果
《python美团抓包》_第12张图片

4.4、将爬取的数据保存到csv

三部曲
第一步:打开文件夹
第二步:放进文件
第三部:关闭文件夹


import csv
#创建文件夹并打开
fp = open('./美团_大学城.csv','a', newline='',encoding='utf-8-sig')
writer=csv.writer(fp)
#写入
writer.writerow(('用户名','用户ID', '评论')) 
#关闭文件
fp.close()

5、代码汇总

import csv,requests
#代理,字典型
headers_meituan={
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36"
}
fp = open('./美团_大学城.csv','a', newline='',encoding='utf-8-sig') #"./"表示当前文件夹,"a"表示添加
writer = csv.writer(fp) #方式为写入
writer.writerow(('用户名','用户ID', '评论')) 
#循环链接
for num in range(0,381,10):
    print("正在爬取%s条......"%num)
    ajax_url="https://www.meituan.com/meishi/api/poi/getMerchantComment?uuid=26ef241e-0867-4013-94f0-452bea9fab76&platform=1&partner=126&originUrl=https%3A%2F%2Fwww.meituan.com%2Fmeishi%2F193383554%2F&riskLevel=1&optimusCode=10&id=193383554&userId=&offset="+ str(num) +"&pageSize=10&sortType=1"
    print(ajax_url)
    #请求链接
    reponse=requests.get(url=ajax_url,headers=headers_meituan)
    for item in reponse.json()["data"]["comments"]:
        name=item["userName"]
        comment=item["comment"]
        user_id=item["userId"]
        result=(name,user_id,comment)
        writer.writerow(result) 
        print(result)
fp.close()

运行结果
《python美团抓包》_第13张图片
《python美团抓包》_第14张图片

你可能感兴趣的:(爬虫实战)