requests使用getresponse()
时间: 2023-12-05 17:03:04 浏览: 69
在使用 requests 库时,可以通过调用 `response` 对象的 `raw` 属性获取 HTTPResponse 对象,然后再使用 `getresponse()` 方法来获取服务器的响应。示例代码如下:
```python
import requests
url = 'https://www.example.com'
response = requests.get(url, stream=True)
http_response = response.raw._original_response
status_code = http_response.status_code
content_type = http_response.headers.get('Content-Type')
# 可以继续使用 http_response 对象获取其他信息...
```
在上面的示例代码中,我们首先使用 requests 库发送了一个 GET 请求,设置 `stream` 参数为 `True`,表示获取响应时不会立即下载响应的内容,而是等到需要时才下载。然后,我们通过访问 `response` 对象的 `raw` 属性获取了一个 HTTPResponse 对象,最后使用 `getresponse()` 方法获取了服务器的响应,并从中获取了状态码和内容类型等信息。
相关问题
Making HTTP requests with sockets in Python
在Python中,通过socket库可以直接发送HTTP请求。这是一个基本的概念,用于实现客户端与服务器之间的通信。以下是使用Python socket进行HTTP GET请求的基本步骤:
1. 导入必要的模块:`socket` 和 `http.client` 或者 `urllib.request`,后者提供更简洁的API。
```python
import socket
import http.client
```
或者
```python
import urllib.request
```
2. 创建套接字并连接到服务器:
```python
# 连接到特定的IP地址和端口号
conn = http.client.HTTPConnection('www.example.com', 80)
```
3. 发送GET请求:
```python
# 构造请求信息
headers = {
'User-Agent': 'Mozilla/5.0',
'Host': 'www.example.com'
}
conn.request('GET', '/', headers=headers)
# 获取响应
response = conn.getresponse()
```
4. 读取响应数据:
```python
data = response.read().decode('utf-8')
```
5. 关闭连接:
```python
conn.close()
```
如果使用`urllib.request`,则会更简洁:
```python
req = urllib.request.Request('http://www.example.com/')
with urllib.request.urlopen(req) as response:
data = response.read().decode('utf-8')
```
用java爬取51job招聘信息,使用requests库、json库在51job主页爬取福州JAVA工程师相关招聘信息,保留爬取的信息页面信息,每一行职位信息用50个“-”符号分隔,将爬取到的数据保存为txt文档。
在Java中使用requests和json库来爬取51Job网站上的招聘信息需要经过几个步骤。首先,你需要安装`requests`库,如果你还没有安装,可以使用`pip install requests`命令来安装。
以下是一个简单的示例,展示如何编写Python脚本来实现这个需求:
```java
import java.io.FileWriter;
import java.io.IOException;
import org.json.JSONArray;
import org.json.JSONObject;
import requests.RequestException;
public class FuzhouJobScraper {
public static void main(String[] args) {
String url = "https://search.51job.com/list/080100,000000,0000,01,99,python&cityId=000000"; // 福州JAVA工程师搜索URL
try {
// 发送GET请求并获取JSON响应
JSONObject responseJson = getResponse(url);
// 解析职位信息
JSONArray jobList = responseJson.getJSONArray("result");
for (int i = 0; i < jobList.length(); i++) {
JSONObject job = jobList.getJSONObject(i);
String title = job.getString("jobtitle"); // 职位标题
String company = job.getString("company"); // 公司名称
// ... (如果存在的话) 你可以提取更多信息如职位链接等
// 将信息格式化为每行50个"-"
String formattedInfo = formatInfo(title, company, "-");
// 写入文本文件
writeToFile(formattedInfo, "fuzhou_java_engineers.txt");
}
} catch (IOException | RequestException e) {
e.printStackTrace();
}
}
private static JSONObject getResponse(String url) throws IOException, RequestException {
// 使用requests库发送GET请求
JSONObject jsonResponse = new JSONObject(requests.get(url).text());
return jsonResponse;
}
private static String formatInfo(String... info) {
StringBuilder sb = new StringBuilder();
for (String part : info) {
if (sb.length() + part.length() <= 50) { // 如果还有空间,添加部分信息
sb.append(part);
} else { // 否则换行,并在新行开头添加-
sb.append("\n" + Strings.repeat("-", 50));
sb.append(part);
}
}
return sb.toString();
}
private static void writeToFile(String content, String fileName) throws IOException {
FileWriter writer = new FileWriter(fileName);
writer.write(content);
writer.close();
}
}
阅读全文