извлечь HTML-идентификатор из тега, используя красивый питон супа - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь извлечь только код iid в html, чтобы я мог добавить его к URL и открыть нужную мне страницу.

Я могу найти нужный мне тег, указав класс тега. Однако я также получил 4 других тега в выводе. Все, что я хочу, это iid внутри первого тега "183988596953"

Я пытался использовать этот код, чтобы указать только idd

rslt_table = soup.find_all("iid",{"div class": "lvpic pic img left"})

Это, однако, кажется, только возвращает пустой список []

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

from bs4 import BeautifulSoup
import requests
import re

urls = ['https://www.ebay.co.uk/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=goldfinger+quad']

#https://www.ebay.co.uk/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=

def find_id(urls):
    for url in urls:
        session = requests.session()
        response = session.get(url)
        #soup = BeautifulSoup(response.content, "lxml")
        soup = BeautifulSoup(response.content, "html.parser")
        rslt_table = soup.find("div", {"class": "lvpic pic img left"})
        return(rslt_table)

Мой URL-адрес поиска https://www.ebay.co.uk/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=goldfinger+quad'

Полный вывод

<div class="lvpic pic img left" iid="183988596953">
<div class="lvpicinner full-width picW">
<a class="img imgWr2" href="https://www.ebay.co.uk/itm/GOLDFINGER-1964-Style-A-B-UK-Cinema-High-Quality-Repro-30-x-40-quad-poster/183988596953?hash=item2ad69330d9:g:rYQAAOSwrENdbmEW">
<img alt='GOLDFINGER 1964 Style A &amp; B -  UK Cinema High Quality Repro 30"x 40" quad poster' class="img" src="https://i.ebayimg.com/thumbs/images/g/rYQAAOSwrENdbmEW/s-l225.jpg"/>
</a>
</div></div>

1 Ответ

1 голос
/ 16 октября 2019

Ваш код обновлен:

  • Используйте attrs, чтобы вернуть все атрибуты
    • {'class': ['lvpic', 'pic', 'img', 'left'], 'iid': '183988596953'}
def find_id(urls):
    for url in urls:
        session = requests.session()
        response = session.get(url)
        soup = BeautifulSoup(response.content, "html.parser")
        return soup.find("div", {"class": "lvpic pic img left"}).attrs['iid']

iid = find_id(urls)

print(iid)

>>> '183988596953'

Если хотите все iid:

def find_id(urls):
    for url in urls:
        session = requests.session()
        response = session.get(url)
        soup = BeautifulSoup(response.content, "html.parser")
        div = s.find_all("div", attrs={'class': 'lvpic pic img left'})
        return [iid.attrs['iid'] for iid in div]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...