本文目录
发送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)