2016-06-24 4 views
1

Я создал код на python, чтобы получить доступ к обратному сайту поиска по телефону и определить, является ли телефон сотовым телефоном или наземной линией. Веб-сайт, который я использую, - это whitepages, страница результатов которого будет включать только фразу «VoIP», если телефон является наземной линией (которую я определил после просмотра многих результатов). Тем не менее, я получаю сообщение об ошибке на веб-сайте, доступ к этапу. Пока мой код выглядит следующим образом:Доступ к веб-сайту с urllib возвращает ошибку, извлечение информации из результатов Страница

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. В версии кода, который я сделал для доступа к другому сайту, потребовалось несколько других преобразований строк в байты, но я не могу вспомнить, какая информация требовала этого преобразования (просто хедз-ап, если код после введения переменной боя выглядит некорректно, потому что у меня есть не удалось отладить код, который следует из моей трудности с моей 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 

Я задавался вопросом, как я мог бы обойти эту ошибку, и если есть какие-либо из возможных альтернатив создавая программу для проверки того, является ли телефон мобильным или стационарным для телефонов DOMESTIC (США). Заранее спасибо!

+0

Не может ответить на ваш вопрос, но вы можете взглянуть на libphonenumber. В Github есть порт Python (https://github.com/daviddrysdale/python-phonenumbers). – moxn

+0

Спасибо за вашу помощь! Я пытался узнать, полезны ли в этой ситуации, если будут использовать phonenumbers, но я считаю, что это может мне только помочь с международными номерами телефонов, которые не являются внутренним случаем, что я пытаюсь сделать:/ –

+0

Ваш подход на самом деле абсолютно неверен, есть необходимость в записи и многое другое происходит, URL-адрес также отличается, последний 'http: // www.whitepages.com/phone/number', но сайт ограничивает количество звонков с вашего ip, так что это тупик, независимо от того, –

ответ

0

Основываясь на материалах, которые я читаю и экспериментирую чтобы попытаться найти ответ на это, я думаю, что это, скорее всего, белые страницы. У меня есть 3 причины:

  1. ошибка, как представляется, является результатом WhitePages только приема запросов от некоторых браузеров («User-Agents»)
  2. При изменении «User-Agent» Я получаю ногами роботов. txt (что в основном является ответом, означающим «не автоматизировать это»)
  3. Обе эти вещи, скорее всего, являются результатом белых страниц с платным API-интерфейсом премиум-класса: очевидно, что они сделают все возможное, чтобы остановить людей от получения доступа к их информации бесплатно, если они пытаются за нее взимать

Итак, Я думаю, что ответ в этом случае, к сожалению, найдет другой поиск в phonenumber.