Python中如何使用requests库获取数据?
想获取中国天气网的天气预警列表,http://www.weather.com.cn/alarm/warninglist.shtml
比如获取北京的暴雨黄色预警,看了下,是通过 js 请求 http://product.weather.com.cn/alarm/grepalarm.php?areaid=10101[\d]{0,2}&type=02&level=02&=1498094080205
可是为什么我直接打开这个地址是 404 呢,用 requests 获取的和浏览器打开一样,请问这个请求应该如何处理呢,谢谢
import requests
import time
url = 'http://product.weather.com.cn/alarm/grepalarm.php?areaid=10101[\d]{0,2}&type=02&level=02&=’ + str(int(time.time() * 1000))
res = requests.get(url)
print res.content
Python中如何使用requests库获取数据?
你仔细想想你的请求头和浏览器一样了吗?
import requests
# 基本GET请求
response = requests.get('https://api.example.com/data')
print(response.text) # 获取响应文本
print(response.json()) # 如果返回JSON可直接解析
# 带参数的GET请求
params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('https://api.example.com/search', params=params)
# POST请求发送表单数据
data = {'username': 'test', 'password': 'secret'}
response = requests.post('https://api.example.com/login', data=data)
# POST请求发送JSON数据
json_data = {'name': 'John', 'age': 30}
response = requests.post('https://api.example.com/users', json=json_data)
# 设置请求头
headers = {'User-Agent': 'my-app/1.0'}
response = requests.get('https://api.example.com', headers=headers)
# 处理响应状态
response = requests.get('https://api.example.com')
if response.status_code == 200:
print("请求成功")
data = response.json()
else:
print(f"请求失败,状态码:{response.status_code}")
# 设置超时(秒)
response = requests.get('https://api.example.com', timeout=5)
# 处理异常
try:
response = requests.get('https://api.example.com', timeout=5)
response.raise_for_status() # 如果状态码不是200,抛出异常
except requests.exceptions.RequestException as e:
print(f"请求出错:{e}")
核心就这几步:导包、发请求、处理响应。记得先pip install requests安装库。
总结:掌握这几个基本方法就能应对大部分数据获取场景。
我加了 header 也是一样
用浏览器直接打开这个 url 也是 404
http://www.weather.com.cn/alarm/newalarmcontent.shtml?file=1012407-20170622082417-0902.html 这个是随便点开的地址,你访问的地址是什么?难道是生成的不是抓的? 代码贴全看看。
带上 Cookie 即可

感谢耐心回复哈
我的目的就是想获取下预警列表,然后如果有我当地的预警,比如北京的,然后我在访问具体的预警内容,学 python 不久,谢谢.
import requests
import time
url = ‘http://product.weather.com.cn/alarm/grepalarm.php?areaid=[0-9]{5,7}&_=’ + str(int(time.time() * 1000))
headers = {‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36’,
‘Refefer’:‘http://www.weather.com.cn/alarm/warninglist.shtml’,
‘DNT’: 1,
‘Host’:‘product.weather.com.cn’}
r = requests.Session()
pre_res = r.get(‘http://www.weather.com.cn/alarm/warninglist.shtml’,headers=headers)
res = r.get(url,headers=headers)
print res.content
拼写错误了…多谢
谢谢指点,是 referer 拼写错了,
是的 得先分析头信息。 我的公众号 DeveloperPython 欢迎你。
这是个什么工具?求教
chrome 插件,postman
bingo


