文本刮取,撇号,字符–x80\x99,正则表达式,python

2024-04-29 08:08:08 发布

您现在位置:Python中文网/ 问答频道 /正文

<div id="product_description" class="sub-header">
        <h2>Product Description</h2>
    </div>
    <p>Dans une France assez proche de la nôtre, un homme s’engage dans la carrière universitaire. Peu motivé par l’enseignement, il s’attend à une vie ennuyeuse mais calme, protégée des grands drames historiques. Cependant les forces en jeu dans le pays ont fissuré le système politique jusqu’à provoquer son effondrement. Cette implosion sans soubresauts, sans vraie révolution, s Dans une France assez proche de la nôtre, un homme s’engage dans la carrière universitaire. Peu motivé par l’enseignement, il s’attend à une vie ennuyeuse mais calme, protégée des grands drames historiques. Cependant les forces en jeu dans le pays ont fissuré le système politique jusqu’à provoquer son effondrement. Cette implosion sans soubresauts, sans vraie révolution, se développe comme un mauvais rêve.Le talent de l’auteur, sa force visionnaire nous entraînent sur un terrain ambigu et glissant ; son regard sur notre civilisation vieillissante fait coexister dans ce roman les intuitions poétiques, les effets comiques, une mélancolie fataliste.Ce livre est une saisissante fable politique et morale. ...more</p>
    



<div class="sub-header">

我想刮去文本块。你能告诉我那里发生了什么事吗?我的尝试就在这里

url = 'https://books.toscrape.com/catalogue/soumission_998/index.html'
response = requests.get(url)
text = response.text

pattern = re.compile(r'<h2>Product Description</h2>\s*</div>\s*<p>(.+?)</p>', re.M | re.S)
brief_dscrp = pattern.findall(text)
brief_dscrp

结果是:

E.法国Asz Prside de L.T.E,\x80\x99从事DaS LaCARRI。[丹斯不挑衅者的儿子放肆。99×xA0这是一个关于金融系统(我的政治体制)的概念,它是一个有效的证据。它是一个无灵魂的内爆,无vraie rÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ维也纳诺特尔文明区与罗马文明区共存,《直觉》系列、《效果漫画》系列、兰蔻莱宿命论系列。生活是政治和士气的寓言


Tags: textdivreledeh2laun
1条回答
网友
1楼 · 发布于 2024-04-29 08:08:08

您应该使用诸如BeautifulSoup之类的刮取库,而不是正则表达式。它将以更优雅的方式处理这类Unicode废话

不管怎样,您在这里看到的是,当您执行response.text时,requests将尝试根据响应头猜测页面的编码。出于某种原因,requests决定响应为ISO-8859-1没有好的理由。(如果没有明确指定编码,它将使用chardet库。)

您可以强制请求使用chardet

response.encoding = None
text = response.text

或者强制使用已知的正确编码

response.encoding = "utf-8"
text = response.text

或者自己解码二进制内容:

text = response.content.decode("utf-8")

等等:

['Dans une France assez proche de la nôtre, un homme s’engage dans la carrière universitaire. Peu motivé par l’enseignement, ...

相关问题 更多 >