最近学习python自动化读取excel中值,使用requests,将url中的headers中的User-Agent修改为特定的值,
读取excel可使用库:pandas
excel如下所示:
case_id | title | url | header |
1 | 使用常规的 | https://lemon.ke.qq.com/ | {'User-Agent':'python-requests/2.19.1'} |
2 | 修改User-Agent为火狐 | https://lemon.ke.qq.com/ | {'User-Agent':'Mozilla/5.0'} |
3 | 修改为不存在的 | https://lemon.ke.qq.com/ | {'User-Agent':'test'} |
4 | 修改为空 | https://lemon.ke.qq.com/ | {'User-Agent':''} |
初始代码为:
test1.py文件中的
import requests
class HttpRequest:
def http_request(url,aa):
req_get=requests.get(url,headers=aa)
res=req_get.request.headers
return res
-------------------------------------
test2.py文件中的
import pandas as pd
from test1 import HttpRequest
test_data=pd.read_excel('D:/test.xlsx')#打开excel获取所有的测试
dk=test_data.values
for indexs in dk:
print("目前执行的是案例{0}:{1}".format(indexs[0],indexs[1]))
#print(headers)
res=HttpRequest.http_request(indexs[2],indexs[3])
print("http的执行结果是{0}".format(res))
执行报错:
原因: excel表中都是str类型,而requests中的headers需要用字典类型,所以需要把excel的第4列进行类型转化
转化方式有两种,一种使用json,一种使用eval(),
使用json,也就是:import json,代码修改如下:
#test2.py文件中的
import pandas as pd
import json
from test1 import HttpRequest
test_data=pd.read_excel('D:/test.xlsx')#打开excel获取所有的测试
dk=test_data.values
for indexs in dk:
print("目前执行的是案例{0}:{1}".format(indexs[0],indexs[1]))
aa=json.loads(indexs[3])
#print(headers)
res=HttpRequest.http_request(indexs[2],aa))
print("http的执行结果是{0}".format(res))
执行依旧报错:
原因:json中的键值都需要用双引号,所以把excel中的第4列修改为双引号
case_id | title | url | header |
1 | 使用常规的 | https://lemon.ke.qq.com/ | {"User-Agent":"python-requests/2.19.1"} |
2 | 修改User-Agent为火狐 | https://lemon.ke.qq.com/ | {"User-Agent":"Mozilla/5.0"} |
3 | 修改为不存在的 | https://lemon.ke.qq.com/ | {"User-Agent":"test"} |
4 | 修改为空 | https://lemon.ke.qq.com/ | {"User-Agent":""} |
可执行成功
将str类型修改为字典类型,也有另外的方法,使用eval()方法,例如:eval(indexs[3]),为了确定类型是否成功转化,使用print(type(eval(indexs[3]))),查看是否返回dict