为什么同一段Python爬虫代码爬取不同网页时会输出None与error?
问题原因
- 你的代码直接遍历
<td>标签的子节点,而BeautifulSoup遍历Tag节点的子节点时,会把**文本节点(换行符、空格、纯文本内容等)**也一同返回,这类节点没有get()方法,调用links.get("href")时会触发异常,输出error - 除了目标
<a>标签外,权游页面的表格第一个<td>内还包含其他无href属性的HTML标签,对这类标签调用get("href")会返回None - 两个页面的表格结构存在差异:你之前爬的dark页面的表格第一个
<td>内仅包含<a>标签,没有冗余内容所以运行正常,权游页面的表格结构更复杂才会出现异常输出。
修复方案
不要直接遍历<td>的所有子节点,而是直接定位<td>内的所有<a>标签即可,修改后代码如下:
import requests from bs4 import BeautifulSoup page = requests.get("https://www.baiscopelk.com/tv-series/game-of-thrones/") soup = BeautifulSoup(page.content, 'html.parser') column = [] for tr in soup.find("table" , class_="aligncenter").find_all("tr") : # 直接找第一个td下的所有a标签,过滤其他无关节点 for links in tr.find_all('td')[0].find_all('a'): try: print(links.get("href")) except: print("error")
内容的提问来源于stack exchange,提问作者Kariyek Newe hutto
相关产品推荐
相关产品推荐

