织梦网站导航如何删除,wordpress自定义主题怎么拷过去,135编辑器 wordpress,推广普通话的故事目录
一、 ajax的get请求豆瓣电影第一页
二、ajax的get请求豆瓣电影前十页
三、ajax的post请求肯德基官网 一、 ajax的get请求豆瓣电影第一页 目标#xff1a;获取豆瓣电影第一页的数据#xff0c;并保存为json文件 设置url#xff0c;检查 -- 网络 -- 全部 -…目录
一、 ajax的get请求豆瓣电影第一页
二、ajax的get请求豆瓣电影前十页
三、ajax的post请求肯德基官网 一、 ajax的get请求豆瓣电影第一页 目标获取豆瓣电影第一页的数据并保存为json文件 设置url检查 -- 网络 -- 全部 -- top_list -- 标头 -- 请求URL 完整代码
import urllib.request
# get请求
# 获取豆瓣电影第一页的数据并保存为json文件url https://movie.douban.com/j/chart/top_list?type17interval_id100%3A90actionstart0limit20
headers {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.76
}# 请求对象的定制
request urllib.request.Request(url, headersheaders)# 获取响应的数据
response urllib.request.urlopen(request)
content response.read().decode(utf-8)
print(content)# 数据下载到本地
with open(douban.json,w, encodingutf-8) as file:file.write(content)# import json
# with open(douban.json,w, encodingutf-8) as file:
# json.dump(content, file, ensure_asciiFalse)通常是因为默认情况下json.dump() 使用的编码是 ASCII不支持包含非ASCII字符如中文的文本。为了在 JSON 文件中包含中文字符你可以指定 ensure_asciiFalse 参数以确保不将中文字符转换为 Unicode 转义序列。二、ajax的get请求豆瓣电影前十页 目标下载豆瓣电影前十页的数据 知识点问题的关键在于观察url的规律然后迭代获取数据 1.设置url
找规律
点击top_list获取第一页的request url复制url点击清空下拉滚动条再次出现top_list时复制第二页的request url重复操作我们可以找到规律。 观察链接可以看到page和start之间的关系
# url 规律
https://movie.douban.com/j/chart/top_list?type17interval_id100%3A90actionstart0limit20
https://movie.douban.com/j/chart/top_list?type17interval_id100%3A90actionstart20limit20
https://movie.douban.com/j/chart/top_list?type17interval_id100%3A90actionstart40limit20
https://movie.douban.com/j/chart/top_list?type17interval_id100%3A90actionstart60limit20# page 1 2 3 4
# start 0 20 40 60
2.定义请求对象定制的函数
def create_request(page):base_url https://movie.douban.com/j/chart/top_list?type17interval_id100%3A90actiondata{start:(page-1)*20,limit:20}data urllib.parse.urlencode(data)url base_urldataheaders {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.76}# 请求对象的定制request urllib.request.Request(url, headersheaders)return request
3.定义获取响应的数据的函数
def get_content(request):# 获取响应的数据response urllib.request.urlopen(request)content response.read().decode(utf-8)return content
4.定义下载函数
def down_load(content,page):with open(daouban_str(page).json,w,encodingutf-8) as file:file.write(content)
5.调用这些函数完成数据抓取
start_page int(input(请输入起始页码))
end_page int(input(请输入结束的代码))for page in range(start_page, end_page1):# 请求对象的定制request create_request(page)# 获取响应的数据content get_content(request)# 下载down_load(content,page)print(fdone_{page})
完整代码
import urllib.request
import urllib.parse
# url 规律
https://movie.douban.com/j/chart/top_list?type17interval_id100%3A90actionstart0limit20
https://movie.douban.com/j/chart/top_list?type17interval_id100%3A90actionstart20limit20
https://movie.douban.com/j/chart/top_list?type17interval_id100%3A90actionstart40limit20
https://movie.douban.com/j/chart/top_list?type17interval_id100%3A90actionstart60limit20# page 1 2 3 4
# start 0 20 40 60# 全部工作下载豆瓣电影前十页的数据
# 请求对象的定制
# 获取响应的数据
# 下载数据def create_request(page):base_url https://movie.douban.com/j/chart/top_list?type17interval_id100%3A90actiondata{start:(page-1)*20,limit:20}data urllib.parse.urlencode(data)url base_urldataheaders {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.76}# 请求对象的定制request urllib.request.Request(url, headersheaders)return requestdef get_content(request):# 获取响应的数据response urllib.request.urlopen(request)content response.read().decode(utf-8)return contentdef down_load(content,page):with open(daouban_str(page).json,w,encodingutf-8) as file:file.write(content)start_page int(input(请输入起始页码))
end_page int(input(请输入结束的代码))for page in range(start_page, end_page1):# 请求对象的定制request create_request(page)# 获取响应的数据content get_content(request)# 下载down_load(content,page)print(fdone_{page})三、ajax的post请求肯德基官网 目标查询肯德基某地区餐厅前十页的信息 1.设置url
进入肯德基官网点击餐厅查询右键检查
网络 -- 名称 -- 标头 -- 请求URL
然后点击清空左上角的 ∅点击第二页再次获取链接信息及负载中的表单数据找规律 可以找到如下规律
pageIndex就是页码 # 第1页
# cname: 深圳
# pid:
# pageIndex: 1
# pageSize: 10# 第2页
# http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?opcname
# cname: 深圳
# pid:
# pageIndex: 2
# pageSize: 10
2.定义请求对象地址的函数
def create_request(page):base_url http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?opcnamedata{cname: 深圳,pid: ,pageIndex: page,pageSize: 10}data urllib.parse.urlencode(data).encode(utf-8)headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.76}request urllib.request.Request(base_url, data, headers)return request
3.获取网页源码
def get_content(request):response urllib.request.urlopen(request)content response.read().decode(utf-8)return content
4.下载
def download(content, page):with open (kfc_str(page).json,w,encodingutf-8) as file:file.write(content)
5.调用函数
start_page int(input(请输入起始页码))
end_page int(input(请输入结束页码))
for page in range(start_page, end_page1):# 请求对象定制response create_request(page)# 获取网页源码content get_content(response)# 下载1download(content, page)
完整代码
import urllib.request
import urllib.parse# 第1页
# cname: 深圳
# pid:
# pageIndex: 1
# pageSize: 10# 第2页
# http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?opcname
# cname: 深圳
# pid:
# pageIndex: 2
# pageSize: 10def create_request(page):base_url http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?opcnamedata{cname: 深圳,pid: ,pageIndex: page,pageSize: 10}data urllib.parse.urlencode(data).encode(utf-8)headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.76}request urllib.request.Request(base_url, data, headers)return requestdef get_content(request):response urllib.request.urlopen(request)content response.read().decode(utf-8)return contentdef download(content, page):with open (kfc_str(page).json,w,encodingutf-8) as file:file.write(content)start_page int(input(请输入起始页码))
end_page int(input(请输入结束页码))
for page in range(start_page, end_page1):# 请求对象定制response create_request(page)# 获取网页源码content get_content(response)# 下载1download(content, page)
参考
尚硅谷Python爬虫教程小白零基础速通含python基础爬虫案例