Followed this tutorial about Web Scraping with Python and BeautifulSoup to learn the ropes - However Pycharm returns an error which I do not understand
Всем привет!
Пробовал вышеупомянутый учебник с исправленной ссылкой в качестве фактической ссылки срок действия учебника истек (Новая ссылка, которую я использовал) Однако, когда я нажимаю «Выполнить», я получаю несколько ошибок Пробовал подсказку типа PyCharm безрезультатно.
import requests
from bs4 import BeautifulSoup
r = requests.get('https://pyvideo.org/events/pycon-se-2018.html')
soup = BeautifulSoup(r.text, 'html.parser')
results = [a.attrs.get('href') for a in soup.select('h4.entry-title a[href^=/pycon]')]
print(results)
Ожидался список ссылок. Что я получаю, хотя это куча ошибок
Traceback (most recent call last):
File "/Users/maxschmitt/PycharmProjects/tester2/tester.py", line 7, in <module>
results = [a.attrs.get('href') for a in soup.select('h4.entry-title a[href^=/pycon]')]
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/bs4/element.py", line 1376, in select
return soupsieve.select(selector, self, namespaces, limit, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/soupsieve/__init__.py", line 114, in select
return compile(select, namespaces, flags, **kwargs).select(tag, limit)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/soupsieve/__init__.py", line 63, in compile
return cp._cached_css_compile(pattern, namespaces, custom, flags)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/soupsieve/css_parser.py", line 209, in _cached_css_compile
CSSParser(pattern, custom=custom_selectors, flags=flags).process_selectors(),
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/soupsieve/css_parser.py", line 1048, in process_selectors
return self.parse_selectors(self.selector_iter(self.pattern), index, flags)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/soupsieve/css_parser.py", line 882, in parse_selectors
key, m = next(iselector)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/soupsieve/css_parser.py", line 1035, in selector_iter
raise SelectorSyntaxError(msg, self.pattern, index)
soupsieve.util.SelectorSyntaxError: Malformed attribute selector at position 16
line 1:
h4.entry-title a[href^=/pycon]
Ты хоть представляешь, что я сделал не так? Любая помощь будет оценена по достоинству!
Большое спасибо!
Вам нужно обернуть /pycon
в "" или избежать его с помощью \
import requests
from bs4 import BeautifulSoup
r = requests.get('https://pyvideo.org/events/pycon-se-2018.html')
soup = BeautifulSoup(r.text, 'html.parser')
results = [a.attrs.get('href') for a in soup.select('h4.entry-title a[href^ = "/pycon"]')]
print(results)
Или
results = [a.attrs.get('href') for a in soup.select('h4.entry-title a[href^=/pycon]')]
Я получал ту же ошибку с
tbl.select_one("a[href*=doi.org]")
, и мне тоже пришлось избегать.
, таким образом:tbl.select_one("a[href*=doi\.org]")
. Спасибо!