首页 > 解决方案 > 错误引发 ValueError("unknown url type: %r" % self.full_url)

问题描述

我是python的初学者,我打算通过做项目来学习python,

我正在编写一个脚本来从谷歌搜索结果中抓取今天的温度,我从各个网站获得了这些代码行

这是我的代码

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)
print(f.read().decode('utf-8'))

产生错误

raise ValueError("unknown url type: %r" % self.full_url)
ValueError: unknown url type: 'urllib.request.Request object at 0x004BF610'

笔记

我的假设Request是一样的,urllib.request.urlopen 因为在开始部分,我已经导入了urllib.request.urlopen库,因为Request Pl 提供了为什么不是这种情况的原因

尝试调试

所以调试这个而不是

f = Request(req)
print(f.read().decode('utf-8'))

我写了(在 req=..... 之后)

print(req)

tt给出了一个输出

<urllib.request.Request object at 0x0023F610>

我无法理解错误请帮我调试一下

另请注意-我的问题与此ValueError("unknown url type: %r" % self.full_url) 不同

标签: pythondebuggingweb-scraping

解决方案


您正在使用先前的 Request 对象作为参数创建一个新的 Request 对象。相反,您想urlopen()使用您的 Request 对象进行调用。像这样:

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'))

推荐阅读