-3

EDIT Я только что понял, какова была функция map(), из-за которой она не запускалась должным образом, я не знаю, почему, но, по крайней мере, сейчас она работает благодаря всей помощи :)Этот код работает только на python2.7?

Я только что обновил мой код к руководству стиля кода pep8 через pycharm, но теперь он работает только на python2, когда я запускаю его, когда python3 получает эту ошибку.

Traceback (most recent call last): 
    File "main.py", line 28, in <module> 
    soup.find_all("td", {"class": "location"})[1:],soup.find_all("td", {"class": "date-time"})[1:]): 
TypeError: 'NoneType' object is not callable 

также номер отслеживания не мой, я только что нашел его в Интернете. импорт SYS запросов на импорт из BS4 импорта BeautifulSoup

s = requests.Session() 
s.headers['User-Agent'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36 ' 
#if len(sys.argv) == 2: 
# trackingNumber = sys.argv[1] 
#else: 
# print("Enter a tracking number to track a number.") 
# sys.exit() 
r = s.get("https://tools.usps.com/go/TrackConfirmAction.action?tRef=fullpage&tLc=1&text28777=&tLabels=CX263292019US") 
soup = BeautifulSoup(r.text, "lxml") 



# Variable declaration. 
current_status = soup.find(class_="detail-summary",) 
some = soup.find_all("div", {"id": "tracking-results"}) 

for tag in some: 
    divTags = tag.find_all("li") 
    for tag in divTags: 
     testrip = tag.encode("utf-8").strip() # Remove all the white space off the text from bs4. 
     if testrip == "The Postal Service could not locate the tracking information for your request." \ 
         " Please verify your tracking number and try again later.": 
      break 

print(
    "----------------------------------------------------------------------------------------------------------------") 

print(current_status.get_text().strip()) 
for Status, Location, Time in map(None, soup.find_all("span", {"class": "info-text"}), 
            soup.find_all("td", {"class": "location"})[1:], 
            soup.find_all("td", {"class": "date-time"})[1:]): 

    print(
     "----------------------------------------------------------------------------------------------------------------") 
    try: 
     print(Status.get_text().strip()) 
     print(Location.get_text().strip()) 
     print(" ".join(Time.get_text().split())) 
    except Exception: 
     pass 
print(
    "----------------------------------------------------------------------------------------------------------------") 
+1

как именно он терпит неудачу на Python3? – Marat

+0

Что вы пытаетесь сделать с помощью 'map (None, ...)'? –

+0

Я перебираю информацию, которую bs4 дал мне, и никто не сохранил ее, прекратив выполнение, когда один список закончится так, но добавил дополнительный элемент в списки, поэтому я исправил его с помощью среза. –

ответ

0

Быстрых, но краткосрочное устойчивое решение:

  • добавить from __future__ import print_function (он использует Python3 синтаксические)
  • чек, если импорт работать в оба Питоны? (В большинстве случаев они идут с Python по умолчанию, но кто знает, что ваш дистрибутив)
  • вывесить StackTrace, если ничего из вышеперечисленного не работает

Более долгосрочное решение: turn on Python 3 syntax checks в PyCharm:

Настройки -> Редактор -> Осмотры -> Python -> код инспекции совместимость