爬虫(requsets)笔记
1、request_基本使用
pip install requests -i https://pypi.douban.com/simple
一个类型六个属性
r.text
| 获取网站源码 |
r.encoding | 访问或定制编码方式 |
r.url | 获取请求的url |
r.content | 响应的字节类型 |
r.status_code | 响应的状态码 |
r.headers | 响应的头信息 |
import requests
url='http://www.baidu.com'
resopnse=requests.get(url=url)
# 第一类型和六个属性
# Response类型
print(type(resopnse))
# 设置响应的编码格式
resopnse.encoding='utf-8'
# 以字符串的形式
print(resopnse.text)
# 返回一个url地址
print(resopnse.url)
# 返回的是二进制数据
print(resopnse.content)
# 返回响应的状态码
print(resopnse.status_code)
# 返回的是响应头
print(resopnse.headers)
2、requests_get请求
定制参数
1、参数使用params
传递
|
2、参数无需urlencode编码 |
3、不需要请求对象的定制 |
4、请求资源路径中?可加可不加 |
# urllib
# 1 一个类型六个方法
# 2 get 请求
# 3 post 请求
# 4 ajax get 请求
# 5 ajax post 请求
# 6 cookie登录
# 7 代理
# requsets
# 1 一个类型六个属性
# 2 get 请求
# 3 post 请求
# 4 代理
# 5 cookie 验证码
import requests
url='http://www.baidu.com/s?'
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
}
data={
'wd':'北京'
}
# url 请求资源路径
# params 参数
# kwargs 字典
response=requests.get(url=url,params=data,headers=headers)
content=response.text
print(content)
# 参数使用params传递
# 参数无需urlencode编码
# 不需要请求对象定制
# 请求资源路径中的?可加可不加
3、request_post请求
get和post区别?
1:
get
请求的参数名字是
params post
请求的参数的名字是
data
|
2: 请求资源路径后面可以不加? |
3: 不需要手动编解码 |
4: 不需要做请求对象的定制 |
import requests
url='https://fanyi.baidu.com/sug'
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
}
data={
'kw':'eye'
}
#url 请求地址
#data 请求参数
#kwarg 字典
response=requests.post(url=url,data=data,headers=headers)
content=response.text
obj=response.json()
print(obj)
#总结
# 1 post请求 是不需要编解码
# 2 post请求的参数是data
# 3 不需要请求对象的定制
使用requsests和xpath获取数据
示例 :获取 百度一下
代码如下:
# 使用requests和Xpath获取数据
from lxml import etree
import requests
url = 'https://www.baidu.com/'
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) Chrome/65.0.3325.181'}
response = requests.get(url,headers = headers)
# 设置响应的编码格式
response.encoding='utf-8'
# 获取网页源码
content= response.content.decode('utf-8')
# print(content)
# xpath解析
html=etree.HTML(content,parser=etree.HTMLParser(encoding='utf-8'))
request=html.xpath('//*[@id="su"]/@value')[0]
print(request)
运行结果: