首页 > 解决方案 > 美汤中的进一步提炼清单

问题描述

我正在使用 Beautiful Soup 4 从网页中获取各种结果。目前我正在尝试处理一个 URL 列表,并让 BS 从这些页面中获取一个 div 并将其存储在一个新列表中。我成功地做到了这一点。下一步是获取 div 的文本结果,但让它成功地遍历这个列表并进一步细化结果对我来说并不成功。

我最终得到一个名为的列表dealcomments,我尝试在对它执行 dealcomments[i].find('a').text 时迭代索引值。我只是不确定如何进一步处理列表以完善它。

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)

回到主要功能它给出了一个错误。

这是我返回的“posttext”div的示例:

[<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>".

我正在尝试在“posttext”div 中获取所有可读文本。

标签: pythonpython-3.xbeautifulsoup

解决方案


试试下面的代码。

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

推荐阅读