杭州网站推广怎样做,拿word如何做网站,福州网站建设企业哪家好?,创网站多少钱requests模块 -1. 什么是requests模块- python原生的一个基于网络请求的模块#xff0c;模拟浏览器发起请求。
-2. 为什么使用requests模块-1. 自动处理url编码-2. 自动处理post请求参数-3. 简化cookie和代理的操作-3. requests模块如何被使用安装#xff1a; pip install re…requests模块 -1. 什么是requests模块- python原生的一个基于网络请求的模块模拟浏览器发起请求。
-2. 为什么使用requests模块-1. 自动处理url编码-2. 自动处理post请求参数-3. 简化cookie和代理的操作-3. requests模块如何被使用安装 pip install requests使用流程1. 指定url2. 使用requests模块发送请求3. 获取响应数据4. 进行持久化存储-4. 通过5个基于requests模块的爬虫项目对该模块进行系统学习和巩固-get请求-post请求-ajax的get-ajax的post-综合 基于requests模块发起get请求 - 需求爬取搜狗首页的页面数据 import requests
#指定url
url https://www.sogou.com/
#发起get请求get方法会返回成功的响应对象
response requests.get(urlurl)
# 获取响应中的数据值text可以获取响应对象中字符串形式的页面数据
page_data response.text
#持久化操作
with open(sogo.html,w,encodingutf-8) as f:f.write(page_data) #response对象中其他重要属性
import requests
#指定url
url https://www.sogou.com/
#发起get请求get方法会返回成功的响应对象
response requests.get(urlurl)response.content #获取的是response对象中二进制byte类型的页面数据response.status_code #返回一个响应状态码如200 或404 response.headers #返回响应头信息response.url #获取请求的url requests模块如何处理带参数的get请求两种方式 需求指定一个词条获取搜狗搜索结果对应的页面数据 #方式1
import requestsurl http://www.sogou.com/web?query金角大王ieutf-8response requests.get(urlurl)page_text response.textwith open(jinjiao.html,w,encodingutf-8) as f:f.write(page_text) #方式2
import requestsurl http://www.sogou.com/web#将参数封装到字典中
params {query:金角大王,ie:utf-8
}response requests.get(urlurl,paramsparams)
page_text response.textwith open(jinjiao.html,w,encodingutf-8) as f:f.write(page_text) #自定义请求头信息
import requestsurl http://www.sogou.com/web#将参数封装到字典中
params {query:金角大王,ie:utf-8
}
#自定义请求头信息 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
headers {User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
}
response requests.get(urlurl,paramsparams,headersheaders)response.status_code 基于requests模块发起post请求 - 需求登录豆瓣网获取登录成功后的页面数据
- tip 如果找不到post请求试试输错密码寻找
- 现在豆瓣改版了只能获取到登录信息cookiesession等类型的东西。但是可以用request.session登录后继续获取页面 import requests
#1 指定post请求的url
url https://accounts.douban.com/j/mobile/login/basic#封装post请求的参数
data {ck: ,name: 13520750458,password: 1123lys,remember: false,ticket:,
}
#自定义请求头信息
headers{User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
}
#2 发起post请求
response requests.post(urlurl,datadata,headersheaders)#获取响应对象中的页面数据
page_text response.text
print(page_text)
#持久化操作
with open(douban.html,w,encodingutf-8) as f:f.write(page_text) 基于ajax的get请求 - 抓取豆瓣电影上的电影详情的数据 import requests
#方式一
url https://movie.douban.com/j/chart/top_list?type20interval_id100%3A90actionstart80limit20
#自定义请求头信息
headers{User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
}
response requests.get(urlurl,headersheaders)
# print(response.text) #返回的是json格式的数据 import requests
#方式二
url https://movie.douban.com/j/chart/top_list?
#封装ajax中get请求携带的参数
params{type:20,interval_id:100:90,action:,start:80,limit:20,}#自定义请求头信息
headers{User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
}
response requests.get(urlurl,paramsparams,headersheaders)
# print(response.text) #返回的是json格式的数据 基于ajax的post请求 -需求 爬取肯德基城市餐厅的位置数据 import requestsurl http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?opkeyword
# 处理post请求参数
data {cname:,pid:,keyword:北京,pageIndex:1,pageSize:10,
}
headers{User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
}
#发起基于ajax的post请求
response requests.post(urlurl,datadata,headersheaders)response.text
type(response.text) 总结 基于ajax的post和get请求和普通的get请求没什么区别唯一不同就是获取urlajax要用抓包工具去获取基于ajax的异步请求的url因为ajax的地址栏的url不变的必须去获取真正的url requests模块高级(cookie操作) - cookie基于用户的用户数据- 需求 爬取张三用户的豆瓣网的个人主页页面数据
- cookie作用服务器端使用cookie来记录客户端的状态信息
实现流程1.执行登录操作获取cookie2.在发起个人主页请求时需要将cookie携带到该请求中注意session对象发送请求会将cookie对象进行自动存储 import requests
#创建session对象
session requests.session()
#1 发起登录请求session对象将cookie获取且自动存储到session对象中
login_url https://accounts.douban.com/j/mobile/login/basic
data {ck: ,name: 13520750458,password: 1123lys,remember: false,ticket:,
}
headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
}
#使用session对象发起post请求
login_response session.post(urllogin_url,datadata,headersheaders)#2 对个人主页发起请求sessioncookie获取响应页面数据
url https://www.douban.com/people/191748483/
response session.get(urlurl,headersheaders)
page_text response.textwith open(douban110.html,w,encodingutf-8)as f:f.write(page_text)print(page_text) requests模块高级(代理操作) - 1 代理第三方代理本体执行相关的事物
- 2 为什么要使用代理-反爬手段-反反扒手段
- 3 分类-正向代理代理客户端获取数据-反向代理代替服务端提供数据
- 4 免费代理IP的网站提供商- www.goubanjia.com- 快代理- 西祠代理
- 5 代码 import requestsurl https://www.baidu.com/s?wdipieutf-8headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
}
#将代理ip封装到字典,(前面url的协议要与代理ip的协议类型相同如都是https或http如果不同需修改url的协议)
proxy {https:222.74.237.246:808
}
#更换网络ip
response requests.get(urlurl,proxiesproxy,headersheaders)with open(./daili.html,wb)as f:f.write(response.content)print(response.content) 综合项目实战 -需求 爬取搜狗知乎某一个词条对应一定范围页码表示的页面数据 import requests
import os# 创建一个文件夹
if not os.path.exists(./pages):os.mkdir(./pages)
word input(enter a word)
#动态指定页码范围
start_page int(input(enter a start pageNum))
end_page int(input(enter an end pageNum))url https://zhihu.sogou.com/zhihu?
headers{User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
}
for page in range(start_page,end_page1):params {query:word,page:page,ie:utf-8, }response requests.get(urlurl,paramsparams,headersheaders)page_text response.textfilename wordstr(page).htmlfilePath pages/filenamewith open(filePath,w,encodingutf-8) as f:f.write(page_text)print(第%s页写入成功%page) 转载于:https://www.cnblogs.com/lys666/p/10477814.html