Python+BeautifulSoup网页爬取:如何仅打印指定行内容
解决方法
嘿,我明白你的问题啦!你现在遇到的问题是因为对字符串索引和列表索引的混淆导致的——你之前给product_size.span.text加[0],是在取每个尺码字符串的第一个字符(比如"36"的第一个字符是"3"),而不是从所有尺码的列表里取第二个元素。
这里有两种简单的解决方式:
方式一:直接获取第二个尺码元素
既然find_all('li')返回的是一个包含所有li元素的列表,你可以直接通过索引[1](Python列表是从0开始计数的,第二个元素索引是1)来获取目标元素,不需要循环:
product_sizes = view_product.find('dl', id='dl_1') # 获取所有尺码的li元素列表 size_items = product_sizes.find_all('li') # 取第二个li元素,提取文本 second_size = size_items[1].span.text print(second_size) # 输出36
方式二:循环时判断索引
如果你还是想保留循环逻辑,可以用enumerate来同时获取元素的索引和内容,当索引等于1的时候打印并跳出循环:
product_sizes = view_product.find('dl', id='dl_1') for index, item in enumerate(product_sizes.find_all('li')): size_text = item.span.text if index == 1: print(size_text) # 输出36 break # 找到目标后跳出循环,提升效率
这样就能精准拿到你想要的第二行内容"36"啦!
内容的提问来源于stack exchange,提问作者Muhammad Suhaimi Bin Rosli
相关产品推荐
相关产品推荐

