Я пытаюсь получить URL для изображений на веб-странице и использовать этот код:
import httplib2
from BeautifulSoup import BeautifulSoup, SoupStrainer
http = httplib2.Http()
status, response = http.request('URL')
for link in BeautifulSoup(response, parseOnlyThese=SoupStrainer('img')):
if "visibility:hidden" not in link:
print "IMAGE PATH: "+link['src']
И я хочу отфильтровать ссылки на невидимые изображения, такие как:
img style="position:absolute;z-index:-3334;top:0px;left:0px;visibility:hidden;" src="https://.....
Но я не могу фильтровать переменную "link". Если всегда пройти.
Какого типа переменная ссылка? строка? Могу ли я преобразовать его в строковый тип? Как мне это сделать, пожалуйста? Спасибо.
Редактировать: Спасибо М. Леунг Я попытался использовать конструктор, который вы дали: BeautifulSoup (ответ, 'html.parser', parse_only = SoupStrainer ('img') но мне это не удается Traceback (последний вызов был последним): Файл "getLinksFromPage3.py", строка 10, в для ссылки в BeautifulSoup (ответ, 'html.parser', parse_only = SoupStrainer ('img')): Файл "/usr/lib/python2.7/dist-packages/BeautifulSoup.py", строка 1522, в init BeautifulStoneSoup. init (self, * args, ** kwargs) Ошибка типа: init () получил неожиданный аргумент ключевого слова 'parse_only'
2 ответа
Используйте tag.attrs
, чтобы сначала получить атрибуты тега, затем отфильтровать атрибуты. Следующий код работает.
Кроме того, вы должны определить, какой синтаксический анализатор подходит для этого случая, будет получен лучший результат.
for link in BeautifulSoup(response, 'html.parser', parse_only=SoupStrainer('img')):
if 'style' in link.attrs:
if "visibility:hidden" not in link['style']:
print link['src']
else:
print link['src']
Спасибо, М. Люн. Мне также пришлось перейти на bs4.
import httplib2
from bs4 import BeautifulSoup, SoupStrainer
http = httplib2.Http()
status, response = http.request('URL')
for link in BeautifulSoup(response, 'html.parser', parse_only=SoupStrainer('img')):
if 'style' in link.attrs:
if "visibility:hidden" not in link['style']:
print link['src']
else:
print link['src']
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.