gpt4 book ai didi

python - 使用 Python 3.x 基本获取 URL 的 HTML 正文

转载 作者:行者123 更新时间:2023-11-28 17:53:22 24 4
gpt4 key购买 nike

我是 Python 新手。我对 Python 2.x 中的旧 urllib 和 urllib2 与 Python 3 中的新 urllib 之间的差异感到有些困惑,除此之外,我不确定在将数据发送到 urlopen 之前何时需要对其进行编码。

我一直在尝试使用 POST 获取 url 的 html 主体,以便我可以发送参数。该网页显示了某个国家/地区在给定日期的特定时间的日照数据。我试过没有编码/解码,打印输出是一串以 b 开头的字节。我随后尝试的代码是

import urllib.request, urllib.parse, urllib.error

def scrape(someurl):

try:

values = {'LANG': 'en',
'DATE' : '1303160400',
'CONT' : 'euro',
'LAND' : 'UK',
'KEY' : 'UK',
'SORT': '2',
'INT' : '06',
'TYPE' : 'sonnestd',
'ART' : 'karte',
'RUBRIK' : 'akt',
'R': '310',
'CEL': 'C'}

data = urllib.parse.urlencode(values)
data = data.encode("utf-8")
response = urllib.request.urlopen(someurl, data)
html = response.read().decode("utf-8")
print(html)

except urllib.error.HTTPError as e:
print(e.code)
print(e.read())

myscrape = scrape("http://www.weatheronline.co.uk/weather/maps/current")

错误是

Traceback (most recent call last):
File "/Users/Me/Desktop/weather.py", line 57, in <module>
myscrape = scrape("http://www.weatheronline.co.uk/weather/maps/current")
File "/Users/Me/Desktop/weather.py", line 37, in scrape
html = response.read().decode("utf-8")
UnicodeDecodeError: 'utf8' codec can't decode byte 0x80 in position 10: invalid start byte

在没有编码/解码的情况下,无论如何我都会得到一个可疑的短字节串,所以我想知道请求是否以其他方式失败

b'GIF89a\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00!\xf9\x04\x01\x00\x00\x00\x00,\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02D\x01\x00;'

最佳答案

GIF89a 表示服务器正在向您发送图像。

此外,您无论如何都不应该使用 UTF-8 进行暴力解码;您应该查看响应 header 以确定要使用的编码。

关于python - 使用 Python 3.x 基本获取 URL 的 HTML 正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5713183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com