首页 > 解决方案 > 如何通过python呈现'如果trs中的tr [a]有一个名称为'hot'的标签?

问题描述

我正在使用 python(最新版本)和 jupyter notebook。我对函数(def del_line)有问题。如果 trs 中的 tr[a] 有一个名称为 'hot' 的标签,我想让它“删除 line[a,a+3]”。我试过了,但它没有删除 div id = "hot" 的 tr 标签。我应该改变什么?

from bs4 import BeautifulSoup
import urllib
from selenium import webdriver 

url = 'http://oulim.kr' 

driver = webdriver.Chrome('./driver/chromedriver')
driver.get(url)

frames = driver.find_elements_by_tag_name('frame')
driver.switch_to.frame(frames[0]) 

html = driver.page_source 
soup = BeautifulSoup(html,'html.parser')

the_table = soup.select_one('#divAlba> table:nth-child(3)')
trs = the_table.find_all('tr')

def del_line(line):
    del line[0]
    for a in range(len(line)):
        temp = id in line[a]
        if temp == "hot":
            del line[a,a+3]
    return line

del_line(trs)

driver.close()

如果您无法连接页面,我会添加部分 html 标签

标签: pythonhtml

解决方案


问题是这条线if temp == "hot":总是会是假的。这是因为您正在为变量分配布尔值temp,而不是字符串。

line[a] in id检查成员资格:如果line[a]在可迭代对象中找到,则id评估为 True,否则为 False。这就是您temp在该行中分配的内容temp = line[a] in id。所以比较实际上看起来像if True == "hot"or if False == "hot",当然这些条件总是 False。

我相信你想要temp = line[a]


推荐阅读