如何避免打印空行?Python爬虫循环仅获首个链接问题求助
问题解答
问题一:如何避免打印空行?
- 若在Python中打印内容,直接给
print()函数指定end参数即可,比如print(目标内容, end=''),这样会取消默认添加的换行符,避免空行产生。 - 若处理文件中的空行,读取内容后可通过列表推导式过滤空行,示例:
[line.strip() for line in open('目标文件.txt') if line.strip()],再对过滤后的内容统一打印或写入。
问题二:爬取UFC拳手链接仅获取第一个链接的问题
问题原因
代码中使用的soup.find('td', {'class': 'b-statistics__table-col'})只会返回第一个匹配到的td标签,后续只能提取该标签内的链接,所以仅得到一个结果。
修复后的代码
import requests from bs4 import BeautifulSoup url = 'http://ufcstats.com/statistics/fighters?char=a' response = requests.get(url) soup = BeautifulSoup(response.content, 'lxml') # 改用find_all获取所有符合class的td标签 all_tds = soup.find_all('td', class_='b-statistics__table-col') fighter_links = [] for td in all_tds: # 从每个td中查找a标签 anchor = td.find('a') if anchor and 'href' in anchor.attrs: fighter_links.append(anchor['href']) print(fighter_links)
关键说明
- 用
find_all()替换find(),获取页面中所有包含拳手链接的td元素; - 遍历每个td标签,从中提取a标签的href属性;
- 添加判断逻辑,避免因部分td中无a标签或href属性导致报错。
内容的提问来源于stack exchange,提问作者genebean
相关产品推荐
相关产品推荐

