首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

404使用urllib时出错,但URL在浏览器中工作正常,并在错误中返回整个网页

问题描述: 当使用urllib库时,出现了404错误,但是在浏览器中该URL能够正常工作,并且返回了整个网页。

解决方案:

  1. 确认URL的正确性:首先,需要确保URL地址正确无误。可以尝试在浏览器中手动输入URL并访问,确保能够正常打开网页。如果URL地址错误或者网页已经不存在,就会出现404错误。
  2. 检查请求头信息:有些网站会对请求头进行检查,如果请求头不符合要求,就会返回404错误。可以尝试在请求中添加合适的请求头信息,例如User-Agent等。
  3. 处理重定向:有些网站会对请求进行重定向,如果urllib库没有处理重定向,就会返回404错误。可以尝试使用urllib库的urlopen函数的follow_redirects参数设置为True,来自动处理重定向。
  4. 处理网页编码问题:有些网页的编码可能与urllib库默认的编码方式不一致,导致解析出错。可以尝试在urlopen函数中指定合适的编码方式,例如添加参数"charset=utf-8"。
  5. 使用其他库:如果以上方法都无法解决问题,可以尝试使用其他库来发送HTTP请求,例如requests库。requests库相对于urllib库更加方便易用,并且对于处理重定向和编码问题有更好的支持。

总结: 在使用urllib库发送HTTP请求时,出现404错误可能是由于URL地址错误、请求头信息不正确、重定向未处理、网页编码问题等原因导致的。可以通过确认URL的正确性、检查请求头信息、处理重定向、处理网页编码问题等方法来解决问题。如果以上方法都无效,可以尝试使用其他库来发送HTTP请求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

爬虫篇| 爬虫urllib使用(三)

开发爬虫过程,对cookie的处理非常重要,urllib的cookie的处理如下 ?...它是获取数据的主要方法 例如:www.baidu.com 搜索 Get请求的参数都是Url中体现的,如果有中文,需要转码,这时我们可使用 urllib.parse.urlencode() urllib.parse...parse.quote() url只能包含ascii字符,实际操作过程,get请求通过url传递的参数中会有大量的特殊字符,例如汉字,那么就需要进行url编码。...例如:请求的资源已经移动一个新地址、常用302(所请求的页面已经临时转移至新的url)、307和304(使用缓存资源) 400~499 客户端的请求有错误,常用404(服务器无法找到被请求的页面)、403...服务器遇到不可预知的情况) Ajax的请求获取数据 有些网页内容使用AJAX加载,而AJAX一般返回的是JSON,直接对AJAX地址进行post或get,就返回JSON数据了 请求 SSL证书验证 现在随处可见

82540

爬虫系列(3)初窥urllib库。

其实就是根据URL来获取它的网页信息,虽然我们浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加 JS、CSS,如果把网页比作一个人,那么HTML便是他的骨架...所以最重要的部分是存在于HTML的,下面我们就写个例子来扒一个网页下来。...它是获取数据的主要方法,例如:www.baidu.com 搜索 Get请求的参数都是Url中体现的,如果有中文,需要转码,这时我们可使用 urllib.parse.urlencode() urllib.parse...例如:请求的资源已经移动一个新地址、常用302(所请求的页面已经临时转移至新的url)、307和304(使用缓存资源) 400~499 客户端的请求有错误,常用404(服务器无法找到被请求的页面)、403...Ajax的请求获取数据 有些网页内容使用AJAX加载,而AJAX一般返回的是JSON,直接对AJAX地址进行post或get,就返回JSON数据了。 8.

86830

爬取数据-urllib

其实就是根据URL来获取它的网页信息,虽然我们浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加 JS、CSS,如果把网页比作一个人,那么HTML便是他的骨架...所以最重要的部分是存在于HTML的,下面我们就写个例子来扒一个网页下来 from urllib.request import urlopen response = urlopen("http://...它是获取数据的主要方法 例如:www.baidu.com 搜索 Get请求的参数都是Url中体现的,如果有中文,需要转码,这时我们可使用 urllib.parse.urlencode() urllib.parse...例如:请求的资源已经移动一个新地址、常用302(所请求的页面已经临时转移至新的url)、307和304(使用缓存资源) 400~499 客户端的请求有错误,常用404(服务器无法找到被请求的页面)、403...Ajax的请求获取数据 有些网页内容使用AJAX加载,而AJAX一般返回的是JSON,直接对AJAX地址进行post或get,就返回JSON数据了 # 8.

53210

走过路过不容错过,Python爬虫面试总结

Selenium 自己不带浏览器,不支持浏览器的功能,它需要与第三方浏览器结合在一起才能使用。但是我们有时候需要让它内嵌代码运行,所以我们可以用一个叫 PhantomJS 的工具代替真实的浏览器。...302状态码:请求的资源临时从不同的URI响应请求,请求者应继续使用原有位置来进行以后的请求 401状态码:请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。...404状态码:请求失败,请求所希望得到的资源未被服务器上发现。 500状态码:服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错出现。...注意的是,当 count()语句包含 where 条件 MyISAM 也需要扫描整个表; 7、对于自增长的字段,InnoDB 必须包含只有该字段的索引,但是 MyISAM表可以和其他字段一起建立联合索引...; 8、清空整个,InnoDB 是一行一行的删除,效率非常慢。

1.4K21

Python:urllib2模块的URLError与HTTPError

urllib2 的异常错误处理 我们用urlopen或opener.open方法发出一个请求,如果urlopen或opener.open不能处理这个response,就产生错误。...: 404 HTTP Error 404: Not Found HTTP Error,错误代号是404错误原因是Not Found,说明服务器无法找到被请求的页面。...203 Non-authoritative Information 文档已经正常返回一些应答头可能不正确,因为使用的是文档的拷贝。 204 No Content 没有新文档。...浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。 205 Reset Content 没有新文档。浏览器应该重置它所显示的内容。...401.7 访问被 Web 服务器上的 URL 授权策略拒绝。这个错误代码为 IIS 6.0 所专用。 402 Payment Required 此代码尚无法使用

2.2K10

爬虫0020:urllib2操作urllib2的使用

至此,我们可以描述爬虫程序,就是用来根据一定的规则采集获取网络的数据的! 整个采集过程主要步骤如下: 分析确定目标网址 连接并向目标网址发送请求 获取目标服务器返回的数据 2....私密代理需要设置对应的账号和密码的验证操作,实际操作过程,需要简单的设置即可,和以后爬虫其他高级使用方式基本是一致的,创建自定义Handler进行如下的操作 proxy_url = "188.68.16.55...地址出现的问题,同时提供了继承自URLError的HTTPError类型专门针对HTTP请求进行的异常行为的处理 但是切记,一切服务器返回的异常行为,都是服务器内部直接出现错误行为并且返回错误状态码导致的异常行为... 程序运行完成 我们可以看到程序并没有出现任何和异常行为相关的错误信息,因为百度的服务器已经将404的异常行为服务器中进行了处理并且返回了指定的404网页数据,所以爬虫访问获取到了404...,必须主动忽略警告信息才能正常访问,如http://www.12306.cn就是如此,我们通过如下程序进行访问就会出错: import urllib2 request = urllib2.Request

68630

python爬虫(七)_urllib2:urlerror和httperror

urllib2的异常错误处理 我们用urlopen或opener.open方法发出一个请求,如果urlopen或opener.open不能处理这个response,就产生错误。...: 404 HTTP Error 404:Not Found HTTP Error,错误代号是404错误原因是Not Found,说明服务器无法找到被请求的页面。...203 Non-authoritative Information 文档已经正常返回一些应答头可能不正确,因为使用的是文档的拷贝。 204 No Content 没有新文档。...浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。 205 Reset Content 没有新文档。浏览器应该重置它所显示的内容。...401.7 访问被 Web 服务器上的 URL 授权策略拒绝。这个错误代码为 IIS 6.0 所专用。 402 Payment Required 此代码尚无法使用

2.2K80

Python 爬虫库 urllib 使用详解,真的是总结的太到位了!!

常用方法: read():是读取整个网页内容,也可以指定读取的长度,如read(300)。获取到的是二进制的乱码,所以需要用到decode()命令将网页的信息进行解码。...req = urllib.request.Request(url=url,headers=headers) #模拟浏览器发送,访问网页 response = urllib.request.urlopen...区别: URLError封装的错误信息一般是由网络引起的,包括url错误。 HTTPError封装的错误信息一般是服务器返回错误状态码。...相反,它们被解析为路径,参数或查询组件的一部分,并fragment返回设置为空字符串。 标准链接格式为: scheme://netloc/path;params?...当URL中路径部分包含多个参数使用urlparse()解析是有问题的,这时可以使用urlsplit()来解析. urlunsplit()与urlunparse()类似,(构造URL),传入对象必须是可迭代对象

1.5K30

python requests模块详解

传递参数  有时候我们需要在URL传递参数,比如在采集百度搜索结果,我们wd参数(搜索词)和rn参数(搜素结果数量), 你可以手工组成URL,requests也提供了一种看起来很NB的方法: ...但我cygwin下使用时老是出现UnicodeEncodeError错误,郁闷。倒是python的IDLE完全正常。 另外,还可以通过r.content来获取页面内容。 ...但我cygwin中用起来并没有,下载网页正好。所以就替代了urllib2的urllib2.urlopen(url).read()功能。(基本上是我用的最多的一个功能。)...,当你使用r.text,requests就会使用这个编码。...也许有人认为这样可以通过判断和正则来获取跳转的状态码了,其实还有个更简单的方法: 前两个例子很正常,能正常打开的返回200,不能正常打开的返回404

2.3K10

python爬虫入门(一)urlliburllib2

浏览器发送HTTP请求的过程: 当用户浏览器的地址栏输入一个URL并按回车键之后,浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要分为“Get”和“Post”两种方法。...203 Non-authoritative Information 文档已经正常返回一些应答头可能不正确,因为使用的是文档的拷贝。 204 No Content 没有新文档。...Python中有很多库可以用来抓取网页,先学习urllib2。...类实例; (2)但是urllib提供urlencode()方法用来GET查询字符串的产生,而urllib2则没有(这是urlliburllib2经常一起使用的主要原因) (3)编码工作使用urllib...的urlencode()函数,帮我们讲key:value这样的键值对转换成‘key=value’这样的字符串,解码工作可以使用urllib的unquote() 函数  urllib.encode()的使用

1.8K60

Python爬虫404错误:解决方案总结

进行网络爬虫开发的过程,经常会遇到HTTP 404错误,即“Not Found”错误。这种错误通常表示所请求的资源不存在。...对于爬虫开发者来说,处理这类错误是至关重要的,因为它们可能会导致爬虫无法正常工作。本文将探讨Python爬虫遇到404错误的解决方案,以及请求头在此过程的重要性。...爬虫开发,我们需要针对这种情况采取相应的措施,以确保爬虫能够正常运行。解决方案1. 检查请求URL是否正确首先,我们需要确保所请求的URL是正确的。...有些网站会对请求头进行验证,如果请求头不符合其要求,就会返回404错误。因此,我们需要确保请求头中包含了必要的信息,比如User-Agent等,以模拟正常浏览器访问行为。..., headers=headers)通过设置合适的请求头,我们可以模拟正常浏览器访问行为,降低404错误的发生概率。

52810

如何使用Selenium WebDriver查找错误的链接?

当您在网站上遇到404 /页面未找到/无效超链接,会想到什么想法?啊!当您遇到损坏的超链接,您会感到烦恼,这是为什么您应继续专注于消除Web产品(或网站)损坏的链接的唯一原因。...我将演示了使用Selenium Python进行的断开链接测试。 Web测试的断开链接简介 简单来说,网站(或Web应用程序)的损坏链接(或无效链接)是指无法访问且无法按预期工作的链接。...链接断开和HTTP状态代码 当用户访问网站浏览器会将请求发送到该网站的服务器。服务器使用称为“ HTTP状态代码”的三位数代码来响应浏览器的请求。...检测到断开的链接显示的HTTP状态代码 以下是网络服务器遇到断开的链接显示的一些常见HTTP状态代码: HTTP状态码 描述 400(错误请求) 服务器无法处理请求,因为提到的URL不正确。...它也可以用于URL传递参数,发送自定义标头等。

6.5K10

常见的HTTP状态码有哪些

当浏览者访问一个网页,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。...下面是常见的HTTP状态码: 常用的状态码简述 2XX 一般是请求成功 200 正常处理 204 成功处理,服务器没有新数据返回,显示页面不更新 206 对服务器进行范围请求,只返回一部分数据 3XX...一般表示重定向 301 请求的资源已分配了新的URIURL地址改变了。...【永久重定向】 302 请求的资源临时分配了新的URIURL地址没变【转发】 303 与302相同的功能,明确客户端应该采用GET方式来获取资源 304 发送了附带请求,但不符合条件【返回未过期的缓存数据...400 请求报文语法错误了 401 需要认证身份 403 没有权限访问 404 服务器没有这个资源 5XX 服务器出错了 500 内部资源出错了 503 服务器正忙

1.1K00

常见的HTTP状态码有哪些?

当浏览者访问一个网页,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。...下面是常见的HTTP状态码: 常用的状态码简述 2XX 一般是请求成功 200 正常处理 204 成功处理,服务器没有新数据返回,显示页面不更新 206 对服务器进行范围请求,只返回一部分数据 3XX...一般表示重定向 301 请求的资源已分配了新的URIURL地址改变了。...【永久重定向】 302 请求的资源临时分配了新的URIURL地址没变【转发】 303 与302相同的功能,明确客户端应该采用GET方式来获取资源 304 发送了附带请求,但不符合条件【返回未过期的缓存数据...】 307 与302相同,但不会把POST请求变成GET 4XX 表示客户端出错了 400 请求报文语法错误了 401 需要认证身份 403 没有权限访问 404 服务器没有这个资源 5XX 服务器出错

67620

使用Python去爬虫

最常见的检查'User-Agent'一项,看是否是正常的真实的浏览器。或者检查'Referer'一项是否正常。这些都可以通过Chrome的开发者工具获取真实值后进行伪装。...sys.exit(1) selenium PhantomJS 以及 selenium 这一类的工具都可以用来进行浏览器自动化测试,就相当于你操纵一个真实的浏览器。笔者只用过 selenium。...小结 Python,爬虫相关的模块有不少,如果是日常简单的任务,用urllib,requests这些基础模块就够用了。...但是如果是复杂的或者规模很大的爬虫,最好使用Scrapy之类的框架。最后要说的就是 selenium 是我们遇到困难的好帮手。 本文是笔者使用Python进行爬虫的一个简要记录,仅供大家参考。...由于只是一个业余使用者,所以文中肯定有不少概念和代码使用上的错误,希望大家不吝指教。

1.5K20

基于python-scrapy框架的爬虫系统

此外,当搜索完成, 如果对租赁信息的分类和整理,也是一条一条记录,很容易产生错误,所以这种传统的手动查询不能满足现实生活的需要,在这种工作状态下集中体现了以下两个方面的问题: 一是步骤繁琐,人员工作量繁重...的确,正如其宣言所说的那样,相比Python自带的urlliburllib2库,虽然二者的功能和requests库一样,urlliburllib2库语法使用和接口调用并不符合高级程序语言的习惯,而是更加接近底层语言...而爬虫的工作原理就是模拟真实的浏览器或者使用浏览器的用户的上网行为,去向服务器发送请求,然后服务器返回给该爬虫向服务器所请求的数据。...比如正常情况下的页面都是有某个标签组成,极限页面无此标签。所以此时可以使用find()函数来过滤极限页面,筛选普通页面。而404页面是不存在的页面。比如58同城里已近下架或者已近出售。...本次主要对于网页数据解析部分进行系统的功能测试,该测试主要是为了保证数据抓取的完整性和有效性,防止有效数据的缺失,完成本部分功能基础上,实现整个分布式爬虫系统的正常和稳定工作

82910

Python——网络爬虫

网络爬虫,又称为网页蜘蛛(WebSpider),非常形象的一个名字。如果你把整个互联网想象成类似于蜘蛛网一样的构造,那么我们这只爬虫,就是要在上边爬来爬去,顺便获得我们需要的资源。...我们之所以能够通过百度或谷歌这样的搜索引擎检索到你的网页,靠的就是他们大量的爬虫每天互联网上爬来爬去,对网页的每个关键词进行索引,建立索引数据库。...找打方法为post的项,各个浏览器可能有差异,可尝试Network里的XHR查找。...代码url和data是复值表头中的url和Form Data,IE浏览器我找了好久,下面分别为360浏览器和IE浏览器的截图: 360: ? IE: ?...则我们可以读取到网页的html,然后使用find函数来找到[190]的数字190,也就是当前页码。

1.4K91

Python爬虫技术系列-01请求响应获取-urllib

,向服务器发起请求,服务器会返回对应数据 # 数据抓包,使用chrome,尽量不要使用国产浏览器 # F12打开界面,点击network,刷新,会显示网页的请求,常见的请求有GET, POST, PUT...": "http://httpbin.org/post" } 通过返回的内容可以返现包含了User-Agent数据,这是因为浏览器发起请求都会有请求头header,urlopen无法添加其他参数,这会让服务器识别出我们是一个爬虫...输出为: 1.1.4 Error 以上讲述的是使用urlopen发送请求的过程,而且是正常情况下的情形。若是非正常情况,比如url地址是错误的或者网络不通,那么就会抛出异常。...使用try…except,except子句一般会加上错误类型,以便针对不同的错误类型采取相应的措施。... 爬取过程,当获得一个URL,如果想把这个URL的各个组成部分分解后使用,那么就要用到url.parse()和url.split()。

24920

python之web模块学习-- url

2  urllib2 常用方法  2.1  urllib2.urlopen     urlopen()是最简单的请求方式,它打开url返回类文件对象,并且使用该对象可以读取返回的内容     urllib2...404 u.geturl() 返回返回的数据的实际url,但是会考虑发生的重定向问题 u.info() 返回映射对象,该对象带有与url关联的信息,对HTTP来说,返回的服务器响应包含HTTP包头。...问题出在请求的头信息(header)。 有的服务端有洁癖,不喜欢程序来触摸它。这个时候你需要将你的程序伪装成浏览器来发出请求。请求的方式就包含在header。     ...使用 REST 接口,Server 会检查Content-Type字段,用来确定 HTTP Body 的内容该怎样解析。...是HTTP URL特别的情况下被抛出的URLError的一个子类。

70620
领券