首页 > 解决方案 > 如何隔离打印输出中的第四行?

问题描述

我有一个屏幕刮板,可以打印这样的价格

输入:

soup = BeautifulSoup(driver.page_source,"lxml")
for item in soup.select('.valueValue-3kA0oJs5'):
    [elem.extract() for elem in soup("div")]
    print(item.text)
    

输出:

478.40
482.11
476.45
480.62
480.62

+5.15 (+1.08%)

我只希望它打印第四(或第五)行,在本例中为 480.62

我试过这个:

soup = BeautifulSoup(driver.page_source,"lxml")
for item in soup.select('.valueValue-3kA0oJs5'):
    [elem.extract() for elem in soup("div")]
    my_str = str(item.text, end=" ")
    price_list = my_str.split()
    price_list[3] 

但这给出了这个错误:

---> 33    my_str = str(item.text, end=" ")
34         price_list = my_str.split()
35         price_list[3]

TypeError: 'end' is an invalid keyword argument for str()

顺便说一句: , end=" " 将所有内容彼此相邻, my_str.split() 用空格分隔它们,并且使用 price_list[3] 我试图隔离第四个。

有谁知道该怎么做?

提前致谢

标签: pythonpython-3.xseleniumbeautifulsoupprinting

解决方案


您可以使用临时列表来存储元素,而不是尝试将它们连接到一个字符串,这不适用于您使用的语法,因为您只会在每次迭代时覆盖它:

soup = BeautifulSoup(driver.page_source,"lxml")
price_list= []
for item in soup.select('.valueValue-3kA0oJs5'):
    [elem.extract() for elem in soup("div")]
    price_list.append(item.text)
    
print(price_list[3])

请注意,打印命令已删除。您只想在循环完成并且拥有完整的价目表后执行此操作。


推荐阅读