Дальнейшее уточнение списка в Beautiful Soup - PullRequest
0 голосов
/ 21 октября 2019

Я использую Beautiful Soup 4 для получения различных результатов с веб-страницы. В настоящее время я пытаюсь обработать список URL-адресов и заставить BS выйти и получить div с этих страниц и сохранить его в новом списке. Я успешен в этом. Следующим шагом было бы получить текстовый результат div, но заставить его успешно перебрать этот список и дополнительно уточнить результаты для меня не удачно.

В итоге я получаю список с именем dealcomments, в котором я пытаюсь перебрать значения индекса, выполняя текст сделки [i] .find ('a'). Я просто не уверен, как дальше обрабатывать список, чтобы уточнить его.

def getDealComments(deallinks):
dealcomments = []

# Can't modify dealcomments to get plain text :~(
for index,link in enumerate(deallinks):
    source = requests.get(link).text
    soup = BeautifulSoup(source, 'lxml')
    dealcomments.append(soup.find_all('div', class_='posttext'))

    print(len(dealcomments))
return dealcomments

Это успешно сгенерирует список из 80 предметов, но я не могу найти способ перенести это уточнение в текст.

Если я запускаю:

print(dealcomments.find('a').text)

в основной функции, это дает ошибку.

Ниже приведен пример div «posttext», который я получаю:

[<div class="posttext" style="margin:20px 0px 10px 0px;display:block;margin-bottom:50px;"><a href="/j/4/?pid=1494475&amp;lno=1&amp;tid=11000&amp;afsrc=1" target="_blank">Amazon</a> has All-new Kindle Paperwhite Now Waterproof on sale. Shipping is free.
<ul>
<li><a href="/j/4/?pid=1494475&amp;lno=1&amp;tid=11000&amp;afsrc=1" target="_blank">All-new Kindle Paperwhite (8GB)</a> for <b>$89.99</b></li>
<li><a href="/j/4/?pid=1494475&amp;lno=2&amp;tid=11000&amp;afsrc=1" target="_blank">All-new Kindle Paperwhite (32GB)</a> for <b>$114.99</b></li>
<li><a href="/j/4/?pid=1494475&amp;lno=3&amp;tid=11000&amp;afsrc=1" target="_blank">All-new Kindle - Now with a Built-in Front Light</a> <b>$65</b></li>
<li><b>YMMV</b>: 15% off a Kindle Paperwhite + $20 ebook credit with promo code "<strong>READKINDLE00</strong>".

Я пытаюсь получить весь читаемый текст в div «posttext».

1 Ответ

0 голосов
/ 21 октября 2019

Попробуйте следующий код.

def getDealComments(deallinks):
 dealcomments = []

# Can't modify dealcomments to get plain text :~(
 for index,link in enumerate(deallinks):
    source = requests.get(link).text
    soup = BeautifulSoup(source, 'lxml')
    for item in soup.find_all('div', class_='posttext'):
        dealcomments.append(item.text)


 return dealcomments
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...