【发布时间】: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 在查找这样的东西时遇到一些问题,所以如果我应该使用另一个库,请告诉我。
谢谢!
【问题讨论】: