我想在登录站点上使用web scrape的请求。我已经使用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)
执行请求后,您可以从响应对象中获取大量信息:
>>> 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.
总之,您可以从响应对象中检索浏览器中Dev Tools中可以找到的所有信息。你什么都不需要。 Dev Tools view Dev Tool view 2
发送GET或POST请求后,您可以从Dev Tools检索信息:
一般来说:
请求网址:您发送请求的网址。对应response.request.url请求方法:对应response.request.method状态码:对应response.status_code
在响应标题中:
您找到与response.headers对应的响应标头
例如。连接:Keep-Alive,Content-Length:0,Content-Type:text / html;字符集= UTF-8 ...
在请求标题中:
您可以找到与response.request.headers对应的请求标头
在表单数据中:
您可以在requests.post中找到使用data关键字传递的数据。对应于response.request.body