красивая ошибка супа "неверный идентификатор персонажа" - PullRequest
1 голос
/ 26 апреля 2020

Я пытаюсь очистить все даты с этой веб-страницы, которые находятся внутри таблицы. Как: используя find, указав элемент таблицы и его атрибут (синим цветом). Проблема: синтаксическая ошибка, неверный идентификатор символа при попытке извлечь всю таблицу. Дополнительная информация: для этого сайта требуются имя пользователя и пароль, поэтому я использую сеансы для сохранения своих учетных данных.

import requests
from getpass import getpass
from requests import get
from requests.exceptions import RequestException
from contextlib import closing
from bs4 import BeautifulSoup
from requests.auth import HTTPBasicAuth

URL = "https://d2l.pima.edu/d2l/lms/dropbox/user/folders_list.d2l?ou=475011&isprv=0"
s = requests.Session()
s.auth = ("myusername", "mypass")
s.headers.update({"x-test": "true"}) 

# both "x-test" and "x-test2" are sent
s.get("https://d2l.pima.edu/d2l/lms/dropbox/user/folders_list.d2l?ou=475011&isprv=0", headers={"x-test2": "true"})
page = requests.get(URL)

soup = BeautifulSoup(page.content, "html.parser")
results = soup.find("div", attrs= {"id":"id_content_r_c1"}​)

ошибка ссылается на последнюю строку кода: недопустимый символ в идентификаторе. Однако я трижды проверял и сравнивал с другими кодами, которые работают, и не вижу никаких отличий. Пожалуйста, помогите, спасибо

Кроме того, вот DO C моей веб-страницы enter image description here enter image description here

traceback:

runfile('/Users/rahelmizrahi/Python/scripts/d2lwebscrape1.py', wdir='/Users/rahelmizrahi/Python/scripts')
  File "/Users/rahelmizrahi/Python/scripts/d2lwebscrape1.py", line 26
    results = soup.find("div", attrs= {"id":"id_content_r_c1"}​)
                                                              ^
SyntaxError: invalid character in identifier

1 Ответ

0 голосов
/ 26 апреля 2020

Вероятно, это результат копирования / вставки кода - давайте посмотрим на ошибочную строку

>>> import unicodedata as ud
>>> s = 'results = soup.find("div", attrs= {"id":"id_content_r_c1"})'
>>> for c in s:print(c, ud.name(c))
... 
r LATIN SMALL LETTER R
e LATIN SMALL LETTER E
s LATIN SMALL LETTER S
u LATIN SMALL LETTER U
l LATIN SMALL LETTER L
t LATIN SMALL LETTER T
s LATIN SMALL LETTER S
  SPACE
= EQUALS SIGN
  SPACE
s LATIN SMALL LETTER S
...
1 DIGIT ONE
" QUOTATION MARK
} RIGHT CURLY BRACKET
 ZERO WIDTH SPACE
) RIGHT PARENTHESIS

Второй последний символ, "ZERO WIDTH SPACE", который является невидимым, является проблемой. Либо удалите его, либо повторите строку кода.

...