我是 Python 新手,正在开发一个网络抓取项目来学习。我正在尝试从 Google 搜索结果中提取今天的温度。我已经将不同来源的代码拼凑在一起,但遇到了 ValueError:未知的 url 类型错误。 这是我的代码:
from bs4 import BeautifulSoup as soup
import requests
from urllib.request import urlopen, Request
myurl = "https://www.google.com/search?q=temperature+today"
req = Request(
myurl,
data=None,
headers={
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
}
)
f = Request(req) # This line seems to be causing the error
print(f.read().decode('utf-8'))
错误信息是: ValueError:未知的 url 类型:'urllib.request.Request 对象位于 0x004BF610'
我相信该错误与我使用 urllib.request.Request 的方式有关。我最初认为它可以与 urllib.request.urlopen 互换,但事实似乎并非如此。当我打印 req 对象时,我得到
您正在使用先前的 Request 对象作为参数创建一个新的 Request 对象。相反,您想使用 Request 对象调用
urlopen()
。像这样:
import requests
from urllib.request import urlopen, Request
myurl="https://www.google.com/search?q=temperature+today"
req = Request(
myurl,
data=None,
headers={
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) >AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
})
f = urlopen(req)
print(f.read().decode('utf-8'))