如何筛选限定BeautifulSoup抓取结果以获取目标图书封面图片链接
代码修改方案
核心逻辑很简单:你现在的写法是边找链接边打印,没法对所有找到的链接统一做筛选,只要先把所有匹配到的链接都存到同一个普通列表里,再统一取最后2个打印即可。
修改后的完整代码如下:
import requests from bs4 import BeautifulSoup # 这里替换成你要爬取的对应页面url url = "http://coleccaoargonauta.blogspot.com/2011/09/n-2-o-estranho-mundo-de-kilsona.html" r=requests.get(url) soup = BeautifulSoup(r.content, 'lxml') # 保留原有逻辑:选择前2个separator类div separador = soup.select("div.separator")[:2] # 获取页面标题 titulo = soup.find_all("h3", {"class": "post-title entry-title"})[0] m = titulo.string print(m, "\n") # 初始化空列表,统一存储所有找到的图片链接 todos_links = [] # 遍历前2个separator div,收集所有链接到统一列表 for div in separador: imagens = div.find_all('a') for link in imagens: todos_links.append(link['href']) # [-2:]是Python列表切片语法:从倒数第二个元素开始取到列表末尾,刚好是最后2个链接 for link in todos_links[-2:]: print(link, "\n")
修改说明
- 新增了空列表
todos_links,把你从两个separatordiv里找到的所有链接都先放到这个列表里,不管每个div里有几个链接,最终都会变成一个普通的一维列表,直接支持切片操作 - 如果你后续要调用wget下载,直接遍历
todos_links[-2:]这个结果就能拿到需要的下载地址
内容的提问来源于stack exchange,提问作者Nuno Rodrigues
相关产品推荐
相关产品推荐

