Tud*_*scu 2 networking python-requests
我想使用请求在登录网站上进行网络抓取。我已经使用 selenium 完成了代码,但是这样做非常不方便且速度较慢,因为我想将其公开(每个用户都必须下载 chrome 驱动程序)。
问题是,该站点有多个请求,我没有任何处理该数据和提取标头数据和名称的经验。任何帮助都很棒,谢谢。
[前提]
使用请求模块,您可以通过以下方式发送请求:
import requests
url = "http://www.example.com" # request url
headers = { # headers dict to send in request
"header_name": "headers_value",
}
params = { # params to be encoded in the url
"param_name": "param_value",
}
data = { # data to send in the request body
"data_name": "data_value",
}
# Send GET request.
requests.get(url, params=params, headers=headers)
# Send POST request.
requests.post(url, params=params, headers=headers, data=data)
Run Code Online (Sandbox Code Playgroud)
一旦执行请求,您可以从响应对象中获取很多信息:
>>> import requests
# We perform a request and get the response object.
>>> response = requests.get(url, params=params, headers=headers)
>>> response = requests.post(url, params=params, headers=headers, data=data)
>>> response.status_code # server response status code
>>> 200 # eg.
>>> response.request.method
>>> 'GET' # or eventually 'POST'
>>> response.request.headers # headers you sent with the request
>>> {'Accept-Encoding': 'gzip, deflate, br'} # eg.
>>> response.request.url # sent request url
>>> 'http://www.example.com'
>>> response.response.body
>>> 'name=value&name2=value2' # eg.
Run Code Online (Sandbox Code Playgroud)
总之,您可以从响应对象中检索在浏览器的开发工具中可以找到的所有信息。你不需要别的什么。 开发工具视图 开发工具视图 2
发送 GET 或 POST 请求后,您可以从开发工具检索信息:
一般来说:
请求 URL:您向其发送请求的 url。对应于response.request.url 请求方法:对应于response.request.method 状态代码:对应于response.status_code
在响应标头中:
您会找到与response.headers相对应的响应标头
例如。连接:保持活动,内容长度:0,内容类型:text/html;字符集=UTF-8...
在请求标头中:
您会找到与response.request.headers对应的请求标头
在表格数据中:
您可以在requests.post中找到您通过data关键字传递的数据。对应response.request.body