【问题标题】:Finding elements by style using pandas使用 pandas 按样式查找元素
【发布时间】:2020-01-13 14:39:59
【问题描述】:

在我目前正在使用的解析器中,我能够通过按样式过滤来正确查找和打印我在标签中搜索的元素。但是,当我尝试从标签中提取时,当我按样式过滤时,bs4 找不到我的结果。 这就是我所拥有的有效标签:

eventData = soup.find_all("div", style = "margin-right: 8px; padding: 8px 0px 16px 16px; overflow: hidden; color: rgb(68, 68, 68); font-size: 15px;")
# append each event as a list within datalist
for i in range(0, len(eventData)):
    eventElement = html_text.extract_text(str(eventData[i]))
    numEvents.append(eventElement)
print("Events Date, Time & Location: ", eventElement)
print("# of Events:", len(numEvents))

正确结果:

活动日期、时间和地点:美国东部标准时间 1 月 24 日星期五下午 5:00 事件数:1

这是行不通的:

datalist = []  # empty list to hold html text
# search for the required text for events
EventName = soup.find_all("h3", style = "font-size: 17px; font-weight: 600; overflow: hidden; margin: 2px 0px 5px; line-height: 20px; display: -webkit-box; max-width: 400px; -webkit-line-clamp: 2; -webkit-box-orient: vertical; text-overflow: ellipsis;")

for i in range(0, len(EventName)):
    eventName = html_text.extract_text(str(EventName[i]))
    datalist.append(eventName)
print("\n")
print("Event Name: ", str(EventName))
print("# of Items: ", len(EventName))

print("# of items: ") 说有 0 个项目,但是当我删除样式过滤器时:

EventName = soup.find_all("h3")

结果显示有两个项目(搜索栏也有 h3 标签),并给了我页面 html 的结果,而不是应该的字符串。我怎样才能解决这个问题,让我的结果打印一个字符串,就像它在我的解析器中使用其他 3 个 div 标签一样? 我知道 bs4 在查找这样的东西时遇到一些问题,所以如果我应该使用另一个库,请告诉我。

谢谢!

【问题讨论】:

    标签: html pandas parsing tags


    【解决方案1】:

    我发现了问题: 我需要改变

    print("Event Name: ", str(EventName)) 
    

    到:

    print("Event Name: ", str(eventName))
    

    然后给了我事件名称的正确结果。 最简单的错误。

    【讨论】:

      猜你喜欢
      • 2022-06-29
      • 1970-01-01
      • 1970-01-01
      • 2013-01-12
      • 2022-01-05
      • 2021-09-30
      • 1970-01-01
      • 2019-08-08
      • 1970-01-01
      相关资源
      最近更新 更多