项目八
项目实战:网络爬虫
2020年5月
CONTENTS
CONTENTS 任务一:爬取手机端数据
任务二:爬取豆瓣电影TOP250
经理:小张,Python模块中爬取网络数据的内容学习完成之后,需要你使用所学的技术爬取一些网站?
小张:爬取什么内容?
经理:爬取网站的标题、图片、路径等等!
小张:网站多种多样,爬取哪类的呢?
经理:爬取一个豆瓣电影网,还有需要练习一下手机端数据爬取。
小张:也就是爬取手机端和PC端?
经理:是的。一种是通过所学的内容直接爬取,一种借助网页分析工具。
小张:好的,保证完成任务。
小张和经理谈完话后,开始调研手机端数据采集分析软件有哪些,并决定使用fiddler软件进行手机端网页分析,除此之外分析豆瓣电影网,并把爬取的数据进行保存。本项目是练习request、urllib等模块,学习步骤为:步骤一:Fiddler抓包工具配置及使用获取手机端数据内容。
步骤二:爬取豆瓣电影TOP250网站,并保存在文本文档中。
【知识目标】
掌握Fiddler抓包工具的使用
掌握手机端数据的获取
掌握网站的分析方法
掌握网络数据的爬取流程
【技能目标】
能够使用Fiddler对网站进行抓包
能够使用Requests模块进行手机端数据的爬取
能够使用Requests模块进行豆瓣电影网数据的爬取能够把爬取的数据进行保存
使用Requests库与抓包工具(拦截查看网络数据包内容的软件)的结合实现一个APP页面内容的爬取。能够通过Fiddler抓包工具配置及使用获取APP数据内容及相关信息,之后使用Requests库相关方法通过链接地址实现APP内数据的爬取。爬取思路如下:
1.安装Fiddler抓包工具。
2.使用Fiddler抓包工具进行网站分析。
3.分析网站。
第一步:下载抓包工具。这里使用Fiddler抓包工具,点击下载按钮后,根据相关提示信息完成内容填写即可实现Fiddler下载,效果如下图所示。
第二步:Fiddler安装。双击下载好的软件安装包,之后点击“I Agree”→“Install”按钮即可安装Fiddler工具。安装完成效果如下图所示。
第三步:Fiddler工具配置。打开刚刚安装完成的Fiddler软件,效果如下图所示。
点击上图中“Tools”菜单下的“Options”按钮进入工具配置界面,效果如下图所示。
点击图中“Connections”按钮,之后进行端口号的配置,效果如下图所示。
第四步:手机配置。由于抓取的是手机APP数据,因此需要在同一局域网内进行手机网络的配置,进入手机WiFi修改界面,设置手动代理并进行主机IP和端口号的配置,效果如下图所示。
第五步:APP页面分析。配置完成后,即可使用当前手机打开需要爬取的APP,这里使用的是美团APP,页面结构如下图所示。
第六步:查看APP信息。找到需要抓取的页面后,在Fiddler抓包工具页面中会获取到当前APP请求网络的路径,点击路径后即可查看当前APP的相关信息,效果如下图所示。
第七步:代码编辑
基本配置和信息获取完成后即可进行代码的编辑,将上面获取的相关请求头信息填入代码相应的位置,之后将爬取路径放入请求方法中进行页面内容的请求,之后通过JSON信息的分析,爬取需要的页面信息,如有需要可将信息保存到本地文件,代码如下所示。# 引入Requests库
import requests
def main():
# 定义请求头
headers = {
# 将Fiddler右上方的内容填在headers中
"Accept-Charset": "UTF-8",
"Accept-Encoding": "gzip",
"User-Agent": "AiMeiTuan /OPPO -5.1.1-OPPO R11-1280x720-240-5.5.4-254-866174010228027-qqcpd",
"Connection": "Keep-Alive",
"Host": "https://www.doczj.com/doc/8717706577.html,"
}
# 循环请求数据
for i in range(0,100,15):
# 右上方有个get请求,将get后的网址赋给heros_url
heros_url = "https://www.doczj.com/doc/8717706577.html,/group/v4/deal/select/city/40/cate/1?sort=defaults&mypos=33.99958870366006%2C109.5 6854195330912&hasGroup=true&mpt_cate1=1&offset="+str(i)+"&limit=15&client=android&utm_source=qqcpd &utm_medium=android&utm_term=254&version_name=5.5.4&utm_content=866174010228027&utm_campaign =AgroupBgroupC0E0Ghomepage_category1_1__a1&ci=40&uuid=704885BFB717F2C01E511F22C00C57BCF6 7FBCCB6E51D4EE4D012C5BE0DCAFC2&msid=8661740102280271551099952848&__skck=09474a920b2f4c 8092f3aaed9cf3d218&__skts=1551100036862&__skua=4cc9b4c45a5fd84d9e60e187fabb4428&__skno=6b0f65d 3-0573-483c-a0c0-68a16fd1dda7&__skcy=ylVLNnkSr%2BWmTKUfgw%2BL6Ms21sg%3D"
# 美食的列表显示在json格式下
res = requests.get(url=heros_url, headers=headers).json()
# 打印列表
for i in res["data"]:
print(i["poi"]["name"])
print(i["poi"]["areaName"])
print(i["poi"]["avgPrice"])
print(i["poi"]["avgScore"])
print("++++++++++++++++++++++++++++++++++++=")
if __name__ == "__main__":
main();
运行代码,效果如下图所示
任务描述
本任务以豆瓣电影TOP250为目标,爬取目标中的中文电影名、年份、评分、评论人数和最热评论的信息,并将爬取得到的信息存入为本地文件,最后将排名前10的电影信息(评论人数、评分)可视化显示。实现本任务的思路如下:
1.明确爬取目标及所需要的效果。
2.根据URL爬取网页数据信息。
3.对数据进行保存。
任务步骤
第一步:打开豆瓣电影TOP250,如下图所示。
第二步:观察访问的网址,会发现豆瓣网URL为:https://https://www.doczj.com/doc/8717706577.html,/top250?start=0&filter=
然后分析豆瓣网URL的规律:
豆瓣电影TOP250网址第一页:
https://https://www.doczj.com/doc/8717706577.html,/top250?start=0&filter=
豆瓣电影TOP250网址第二页:
https://https://www.doczj.com/doc/8717706577.html,/top250?start=25&filter=
豆瓣电影TOP250网址第三页:
https://https://www.doczj.com/doc/8717706577.html,/top250?start=50&filter=
一直到第十页:https://https://www.doczj.com/doc/8717706577.html,/top250?start=225&filter=
分析后可以发现规律,豆瓣电影TOP250网址中的每页URL中“start=”后面的数值是不一样的,并且是在上次的基础上累加数值25,根据这个规律可以爬取豆瓣电影TOP250网址中所有数据信息。抓取豆瓣电影top250首页代码如下:import requests
import re
import json
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"}
url = 'https://https://www.doczj.com/doc/8717706577.html,/top250?start=0&filter='
proxies = {
"http": "http://123.207.96.189:80"
}
response = requests.get(url, proxies = proxies,headers=headers)
text = response.text
print(text)
具体效果如下图所示:
第三步:抓取每一部电影的信息。在网页右键点击“查看网页源代码”,效果如下图所示。