【问题标题】:BeautifulSoup, Python: parsing lots of element in a lot of div?BeautifulSoup,Python:解析大量 div 中的大量元素?
【发布时间】:2017-12-10 19:53:21
【问题描述】:

我正在尝试使用 BeautifulSoup 解析一个看起来像 this 的网页 我必须使用 class "quote mediumText"

从每个 div 标记中获取我圈出的文本

【问题讨论】:

  • 你的代码在哪里?

标签: python-3.x web-scraping beautifulsoup


【解决方案1】:

要获得链接中的红色圆圈文本,请尝试以下操作:

import bs4 as bs
import requests

source = requests.get("https://www.goodreads.com/quotes/tag/fear").text
soup = bs.BeautifulSoup(source, "lxml")
# Remove script tags.
[s.extract() for s in soup('script')]
divs = soup.findAll("div",{'class':'quoteText'})
for div in divs:
    print (div.text.replace('\n', ' ').replace('\r', ''))

更新删除脚本标签换行符和回车,

【讨论】:

  • 我已经和你一样做了,但问题是这样做你拿的不是文本,而是div中的其他东西
  • 你能举个例子吗?
  • 我不知道为什么它需要脚本标签内的数据:
  • //
  • 更新了删除脚本标签换行符和回车的答案,
【解决方案2】:

您可以使用列表理解语法在一行中完成此任务:

myList = [elem.text for elem in soup.findAll("div",{'class':'quoteText'})]

【讨论】:

  • 而不是 elem.text 和 elem 我必须放 div quoteText
  • 不,尝试执行这一行。它将提取.findAll 返回列表中每个elem.text
  • 不应该,图中圈出的文字有class = "quoteText",但是你提到你想要带有class = "quote mediumText"的文字
  • 哦,我明白了,我误解了你,使用class: "quoteText" 应该这样做。类似于 Dan-Dev 上面的回答:)
  • 别担心!不用道歉
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-22
  • 2012-03-17
  • 2020-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多