爬虫学习笔记:request库的使用

官方文档

发送GET请求

response = requests.get("https://blog.csdn.net/CSDNXXCQ")

添加headers和查询参数

如果要添加 headers,可传入headers参数以在请求头中添加头信息。如要在URL中传递参数,可使用params参数。相关示例代码如下所示:

import requests



#要查询的关键字
kw = {'wd':'神经网络'}

headers = {"请自行填入"}

# params 接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode()
response = requests.get("https://blog.csdn.net/CSDNXXCQ", params = kw, headers = headers)

#响应内容,response.text 返回的是Unicode格式的数据
print(response.text)

#响应内容,response.content返回的字节流数据
print(response.content)

#完整url地址
print(response.url)

#响应头部字符编码
print(response.encoding)

# 响应码
print(response.status_code)

返回结果
在这里插入图片描述

发送POST请求

response = requests.post("https://blog.csdn.net/CSDNXXCQ",data=data)

传入data数据

此时不要再使用urlencode进行编码,直接传入一个字典进去即可

import requests

url = "网址"

headers = {
    'User-Agent': '自行填入',
    'Referer': '自行填入'
}
#要传入的参数
data = {
    'A': 'true',
    'B': 10,
    'C: 'python'
}

resp = requests.post(url,headers=headers,data=data)
# 如果是json数据,直接可以调用json方法
print(resp.json())

使用代理

import requests

url = "https://blog.csdn.net/CSDNXXCQ"

headers = {
    'User-Agent': '请自行填入',
}

proxy = {
    'http': '代理地址'
}

resp = requests.get(url,headers=headers,proxies=proxy)
with open('xx.html','w',encoding='utf-8') as fp:
    fp.write(resp.text)

获取cookie

前提:该响应中包含了cookie

import requests

url = "网页"#比如登录界面
data = {"账号":"自行填入",'密码':"自行填入"}#要传进去的参数
resp = requests.get('https://blog.csdn.net/CSDNXXCQ')
print(resp.cookies)
print(resp.cookies.get_dict())

session

若用requests也要达到共享cookie的需求,可用requests库给提供的session的object。这里的session不是web开发中的那个session,这里只是一个会话的object。

import requests

url = "https://blog.csdn.net/CSDNXXCQ"
data = {"账号":"自行填入",'密码':"自行填入"}
headers = {
    'User-Agent': "自行填入"
}

# 登录
session = requests.session()
session.post(url,data=data,headers=headers)

# 访问CSDN
resp = session.get('https://blog.csdn.net')

print(resp.text)

对不信任的SSL证书的处理

resp = requests.get('https://blog.csdn.net/CSDNXXCQ',verify=False)
print(resp.content.decode('utf-8'))

结合lxml库使用

获取所有li标签

 from lxml import etree

 html = etree.parse('A.html')
 print type(html)  # 显示etree.parse() 返回类型

 result = html.xpath('//li')

 print(result)  # 打印<li>标签的元素集合

获取所有li元素下的所有class属性的值

from lxml import etree

 html = etree.parse('A.html')
 result = html.xpath('//li/@class')

 print(result)

获取li标签下href为https://blog.csdn.net/CSDNXXCQ的a标签

 from lxml import etree

 html = etree.parse('A.html')
 result = html.xpath('//li/a[@href="https://blog.csdn.net/CSDNXXCQ"]')

 print(result)

获取li标签下所有span标签

 from lxml import etree

 html = etree.parse('A.html')
 result = html.xpath('//li//span')

 print(result)

获取最后一个li的a的href属性对应的值

 from lxml import etree

 html = etree.parse('A.html')

 result = html.xpath('//li[last()]/a/@href')
 # 谓语 [last()] 可以找到最后一个元素

 print(result)

获取倒数第二个li元素的内容

 from lxml import etree

 html = etree.parse('A.html')
 result = html.xpath('//li[last()-1]/a/text()')

 print(result)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丰。。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值