如何绕过元素树不匹配的标签错误?

问题描述

所以只是一点上下文,我目前正在使用 Element Tree 为最新的文章标题抓取几个加密新闻提要。下面的代码适用于大多数网站,但是在某些提要中,我收到以下错误,例如:

xml.etree.ElementTree.ParseError: mismatched tag: line 134,column 2

我猜这是由于该网站的 XML 代码中的错误造成的。我正在寻找一种方法来绕过这个错误并无论如何都要拉上最后一个标题,希望得到一些帮助:) 代码如下:

import xml.etree.ElementTree as ET
import requests

r = requests.get('https://cointelegraph.com/Feed')
root = ET.fromstring(r.text)

headline = root.find('channel/item/title').text


print(headline)

解决方法

您可能会看到 Cloudflare 验证码页面。尝试在 HTTP 标头中指定 User-Agent

import xml.etree.ElementTree as ET
import requests

headers = {
    "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0"
}
r = requests.get("https://cointelegraph.com/feed",headers=headers)
root = ET.fromstring(r.text)
headline = root.find("channel/item/title").text
print(headline)

打印:

Why is XRP seeing a monster rally when Ripple is worth just $3B on the secondary market?