基于ajax的get请求
-需求:抓取豆瓣电影上电影详情的数据
import requests url = 'https://movie.douban.com/j/chart/top_list?' #封装ajax的get请求中携带的参数 data={ 'type': '13', 'interval_id': '100:90', 'action': '', 'start': '100', #改变起始值就能爬取到不同的数据 'limit': '20' } #自定义请求头信息 headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36', } response=requests.get(url,headers=headers,params=data) print(response.text)
基于ajax的post请求
- 需求:爬去肯德基城市餐厅位置数据
import requests #基于ajax post请求 url='http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword' headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36', } data={ 'cname':'', 'pid': '', 'keyword': '上海', #在哪里 'pageIndex': '1', #第几页 'pageSize': '10' #请求多少个数据 } response=requests.post(url,headers=headers,data=data) print(response.text)
#项目实战(爬取指定的页面,关键字,并存储下来)
import requests import os #创建一个文件夹 if not os.path.exists('./pages'): os.mkdir('./pages') word = input('enter a word:') #动态指定页码的范围 start_pageNum = int(input('enter a start pageNum:')) end_pageNum = int(input('enter a end pageNum:')) #自定义请求头信息 headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36', } #1.指定url:设计成一个具有通用的url url = 'https://zhihu.sogou.com/zhihu' for page in range(start_pageNum,end_pageNum+1): param = { 'query':word, 'page':page, 'ie':'utf-8' } response = requests.get(url=url,params=param,headers=headers) #获取响应中的页面数据(指定页码(page)) page_text = response.text #进行持久化存储 fileName = word+str(page)+'.html' filePath = 'pages/'+fileName with open(filePath,'w',encoding='utf-8') as fp: fp.write(page_text) print('第%d页数据写入成功'%page)