как мне поцарапать image-src в BeautifulSoup - PullRequest
1 голос
/ 27 марта 2019

я пытаюсь получить image-src в этом коде

<img alt='Original Xiaomi Redmi Note 5 4GB RAM 64GB ROM Snapdragon S636 Octa Core Mobile Phone MIUI9 5.99" 2160*1080 4000mAh 12.0+5.0MP(China)' class="picCore" id="limage_32856997152" image-src="//ae01.alicdn.com/kf/HTB1WDJZbE_rK1Rjy0Fcq6zEvVXaS/Original-Xiaomi-Redmi-Note-5-4GB-RAM-64GB-ROM-Snapdragon-S636-Octa-Core-Mobile-Phone-MIUI9.jpg_220x220xz.jpg" itemprop="image"/>

я пробовал этот код, но он не работает

images = soup.find ('img') .get ('image-src')

обычно я использую `get ('src'), и это работает, но проблема здесь, мне нужно использовать image-src, который не работает

Ответы [ 3 ]

0 голосов
/ 27 марта 2019

Глядя на эту документацию, я нашел find_all метод, который работает для этого случая:

Это сработало для меня:

for link in soup.find_all('img'):
    print(link.get('image-src'))

Здесь был мойполный код:

from bs4 import BeautifulSoup

html_doc = """
<img alt='Original Xiaomi Redmi Note 5 4GB RAM 64GB ROM Snapdragon S636 Octa Core Mobile Phone MIUI9 5.99" 2160*1080 4000mAh 12.0+5.0MP(China)' class="picCore" id="limage_32856997152" image-src="//ae01.alicdn.com/kf/HTB1WDJZbE_rK1Rjy0Fcq6zEvVXaS/Original-Xiaomi-Redmi-Note-5-4GB-RAM-64GB-ROM-Snapdragon-S636-Octa-Core-Mobile-Phone-MIUI9.jpg_220x220xz.jpg" itemprop="image"/>
"""

soup = BeautifulSoup(html_doc, 'html.parser')

for link in soup.find_all('img'):
    print(link.get('image-src'))

и результат:

//ae01.alicdn.com/kf/HTB1WDJZbE_rK1Rjy0Fcq6zEvVXaS/Original-Xiaomi-Redmi-Note-5-4GB-RAM-64GB-ROM-Snapdragon-S636-Octa-Core-Mobile-Phone-MIUI9.jpg_220x220xz.jpg  
0 голосов
/ 27 марта 2019

Вы можете использовать селектор идентификатора css, если идентификатор статический, чтобы выбрать элемент, а затем подмножество, чтобы получить атрибут img-src

from bs4 import BeautifulSoup as bs

html = '''
<img alt='Original Xiaomi Redmi Note 5 4GB RAM 64GB ROM Snapdragon S636 Octa Core Mobile Phone MIUI9 5.99" 2160*1080 4000mAh 12.0+5.0MP(China)' class="picCore" id="limage_32856997152" image-src="//ae01.alicdn.com/kf/HTB1WDJZbE_rK1Rjy0Fcq6zEvVXaS/Original-Xiaomi-Redmi-Note-5-4GB-RAM-64GB-ROM-Snapdragon-S636-Octa-Core-Mobile-Phone-MIUI9.jpg_220x220xz.jpg" itemprop="image"/>
'''
soup = bs(html, 'lxml')
print(soup.select_one('#limage_32856997152')['image-src'])

Если идентификатор не является статическим, и если может быть более одного целевого объекта, вы можете использовать селектор класса в сочетании с атрибутом

srcs = [ img['image-src'] for img in soup.select('.picCore[image-src]')]
print(srcs)

Любой image-src, просто используйте селектор атрибута

srcs = [img['image-src'] for img in soup.select('[image-src]')]
0 голосов
/ 27 марта 2019

Вы можете получить доступ к атрибутам тега, рассматривая тег как словарь. Вы можете получить доступ к этому словарю напрямую как .attrs

soup.find('img').attrs['image-src']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...