如何隔离打印输出中的第四行?

问题描述

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

输入:

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()

btw:,end =“”将所有内容放在一起,my_str.split()通过空格将它们分开,并使用price_list [3]试图隔离第四个。

有人知道该怎么做吗?

预先感谢

解决方法

与其尝试将它们连接成一个字符串(该字符串无法使用您使用的语法,因为每次迭代都将其覆盖),您可以使用一个临时列表来存储元素:

library(ggplot2)
library(dplyr)
library(ggtext)

setColors <- function(x,col="red") 
    paste0("<span style = 'color:",col,";'>",x,"</span>")

mycols <- setNames(colorspace::rainbow_hcl(length(unique(mtcars$cyl))),unique(sort(mtcars$cyl)))

mtcars %>% 
    mutate(cyl = factor(setColors(cyl,col= mycols[as.character(cyl)]),unique(setColors(cyl,col = mycols[as.character(cyl)]))[
                            order(unique(cyl))])) %>% 
    ggplot(aes(wt,mpg,colour = cyl)) + 
    geom_point() +
    theme(legend.text = element_markdown()) +
    scale_color_manual(values = unname(mycols))

请注意,已确定打印命令。您只想在循环完成后就拥有完整的价目表。