【发布时间】:2021-07-31 23:34:54
【问题描述】:
我在下面的 & 和 nbsp 之间使用了空格,尽管在我的代码中没有空格。
我正在尝试使用 Beautifulsoup 进行网页抓取,但目前遇到了一个问题。我能够使用 find_all 成功获取我需要的元素,它在一个表中,所以首先是键,其次是值。所以我使用网站中设置的key变量名,用if语句与我需要的key进行大小写匹配,然后获取它的相关值,但是html中的一些key变量包含 在键变量名的文本之间。 If 语句与曾经存在 的变量不匹配。
以下是谷歌浏览器检查模式的 html
<tr valign="top">
<td><b>Active since:</b></td>
<td><a href="/InterH1/Category:E_2012" title="Category:2021 H1">14199083</a> (212E)</td>
</tr>
以下代码来自soup方法
<tr valign="top">
<td><b>Active since:</b></td>
<td><a href="/InterH1/Category:E_2012" title="Category:2021 H1">14199083</a> (212E)</td>
</tr>
If 语句适用于所有变量,只要关键变量是一个没有空格的单词,如下所示
if keycheck[0].get_text().strip() == "Year:":
intercincom_eight_year = keycheck[1].get_text().strip()
但无论关键变量包含 ,它都会失败,例如
if keycheck[0].get_text().strip().replace(" ", " ") == "Active since:":
intercincom_eight_active = keycheck[1].get_text().strip()
或
if keycheck[0].get_text().strip() == "Active since:":
intercincom_eight_active = keycheck[1].get_text().strip()
我认为我不必使用替换来删除带有空格的 nbsp,因为每当我打印关键变量时,它都会在没有 nbsp 的情况下打印,这与 chrome 检查模式中存在的不同。例如
print(keycheck[0].get_text().strip())
给出 Active year: 而不是 Active since: 但它仍然不匹配 if声明
if keycheck[0].get_text().strip() == "Active since:":
感谢您的帮助,谢谢
【问题讨论】:
标签: python html web-scraping beautifulsoup