爬虫之动态数据采集

动态加载

  • 需求:爬取豆瓣网中的电影详情数据

    • url:https://movie.douban.com/typerank?type_name=%E7%A7%91%E5%B9%BB&type=17&inter数据采集员是干什么的val_id=100:90&action=
    • 涉及到终点:动态加载数据
  • 分析网站:

    • 当滚轮滑动到底部的时候,页面会发起ajax请求,且请求到一组电影详情数据。
    • 当滚轮不滑动的时候,页面显示的电影数据,通过对浏览器地址栏的url发起请求是请求不到的。
  • 动态加载的数据

    • 可见非即可得
    • 概念:通过非浏览器地址栏url请求到的数据(另外的一个新的请求请求到的数据)
    • 当我们对一个陌生的网站前端开发需要学什么进行指定数据采集数据爬取之前,我们在写代码之前必须要做的一个事情就是校验你想要爬取的数据是否为动态加载的数据

      • 是动态加载的数据

        • 基于抓包工具进行全局搜索,锁定动态加载数据对应的数据包即可。从数据包数据挖掘的应用中提取请求的url和请求方式和请求参数。
      • 不是动态加载的数据

        • 直接对地址栏的url发起请求就可以获取指定数据
import requests
url = 'https://movie.douban.com/j/chart/t数据挖掘分析师op_list'
#参数动态化
params = {
"type": "17",
"interval_id": "100:90",
"action数据采集是什么工作": "数据采集员",
"start": "20",
"limit": "10",
}
re数据挖掘导论sponse = requests.get(url=url,headers=headers,params=params)
page_text = response.json() #json返回的是序列号好的对象
#将电影名称和评分进行解析
for dic in page_text:
name = dic['title']
score = dic['score']
print(name数据采集+':'+score)
  • 问题:如何前端开发前景怎么样啊检测页面中的数据是否为动态加载的数据?

    • 基于抓包工具前端开发工程师进行局部搜索

      • 搜索到:不是动态加载数据
      • 搜索不到:是动态加载数据
  • 肯德基餐厅查询:http://www.kfc.com.cn/kfccda/storelist/index.aspx
  • 分析:

    • 数据为动态加载数据
    • 通过抓包工具的全局搜索捕获动态加载数据
im数据挖掘分析师port r数据采集是什么工作equests
url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
data = {
"cname": "",
"pid": "",
"keyword": "北京",
"p数据采集与处理ageIndex": "1",
"pageSize": "10",
}
#参数:data是用来实现参数动态化,等同于get方法中的params参数的作用
response = requests.post(url=url,headers=headers,data=data)
page_text = response.json()
fo数据采集系统r dic in page_text['Table1']:
po数据挖掘导论s = di前端开发培训机构推荐c['addressDetail']
print(pos)
import requests
#想要获取所有前端开发工资一般多少页码对应的位置信息
url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
for pageNum in range(1,8):
data = {
"c数据采集n数据挖掘ame": "",
"pid": "",
"keyword": "北京",
"pageIndex": str(pageNum),
"p数据采集工具选择过程中需要注意ageSize": "10",
}
#参数:d数据挖掘算法ata是用来实现参数动态化,等同于get方法中的params参数的作用
response = requests.post(url=url,head前端开发需要掌握什么技术ers=headers,data=data)
page_text = response.json()
for dic in page_text['Table1']:
pos = dic['addressDetail']
print(pos)