使用urllib访问网站返回错误,从结果页检索信息

2024-09-27 07:28:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python创建了一个代码,这样我就可以访问一个反向电话查找站点,并确定一个电话是手机还是陆地电话线。我使用的网站是whitepages,如果手机是陆地线路(我在查看了很多结果后确定),它的结果页面将只包含短语“VoIP”。然而,我在网站访问阶段得到一个错误。到目前为止,我的代码看起来像:

import urllib

def Phone_Checker(number):
     url = 'http://www.whitepages.com/reverse_phone'
     enter = {'e.g. 206-867-5309': number}
     door= urllib.parse.urlencode(enter)
     open=door.encode('UTF-8')
     fight= urllib.request.urlopen(url, open)
     d = fight.read()
     v="VoIP"
     vv=v.encode("UTF-8")
     if vv in d:  #if VoIP  it is landline
          return False
     else:
          return True

我将字符串更改为字节,因为urlopen的变量“open”必须是字节。在一个版本的代码,我做了访问不同的网站,它需要一些其他字符串转换成字节,但我不太记得哪些信息需要这种转换(只是一个提示,如果代码后,介绍了变量打架看起来不正确,因为我没能调试代码,因为我的错误,下面的我的urlopen有困难。每当我运行我的代码,我收到这个错误

File "C:\Users\aa364\Anaconda3\lib\urllib\request.py", line 589, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)

HTTPError: Requested Range Not Satisfiable

我想知道如何才能避免这个错误,如果有任何可能的替代方案,以创建一个程序,以验证一个电话是移动或固定电话的国内(美国)电话号码。提前谢谢!你知道吗


Tags: 代码httpurlnumber字节网站错误open
1条回答
网友
1楼 · 发布于 2024-09-27 07:28:09

基于我正在阅读和尝试的东西,我想这很可能是白页在做的。我有三个理由:

  1. 此错误似乎是由于whitepages仅接受来自某些浏览器的请求(“用户代理”)造成的
  2. 在更改“用户代理”时,我会被踢到机器人.txt(这基本上是一个响应,意思是“不要自动执行此操作”)
  3. 这两种情况都可能是白页拥有付费/高级访问API的结果:显然,如果人们试图收费,他们会尽其所能阻止人们免费访问他们的信息

所以,我认为这个例子的答案是,不幸的是,找到另一个电话号码查找。你知道吗

相关问题 更多 >

    热门问题