如何从BeautifulSoup获取的og:description meta标签提取文本?
问题描述
给定格鲁吉亚房产网站,使用以下代码爬取房源详情页的og:description内容:
div_class = content.find_all("div", class_='sc-8fa2c16a-5 gpNUxi') for div in div_class: prices.append(div.text) subcontent = requests.get(base_link + div.a['href']) subcontent = BeautifulSoup(subcontent.text, 'html.parser') meta = subcontent.find_all("meta", property='og:description') print(meta[0])
执行后输出的meta标签如下:
<meta content="იყიდება 4 ოთახიანი ბინა. თეთრი კარკასი. ორი სველი წერტილი. (ერთი სველი წერტილი გარემონტებულია) დიდი ტერასითა და მოწესრიგებული სადარბაზოთი. დახურული ეზო შლაგბაუმით. ვარ მესაკუთრე. მეტროდан მაქსიმუმ 5 წუთის სავალზე. სველი წერტილები ისეა განლაგებული შესაძლებელია მარტივატ ორ ბინად დაყოფა. ფასზე დალაპარაკება შესაძლებელია. 01.11.12.018.202 " property="og:description"/>
尝试用meta[0].text提取文本时没有结果,求解决方法。
解决方法
- 核心原因:
<meta>是自闭合标签,本身不存在文本节点,.text方法仅能获取标签内部嵌套的文本内容,因此无法拿到目标值。 - 正确实现:通过
get('content')方法直接读取标签的content属性值,优化后的代码如下:
div_class = content.find_all("div", class_='sc-8fa2c16a-5 gpNUxi') for div in div_class: prices.append(div.text) subcontent = requests.get(base_link + div.a['href']) subcontent = BeautifulSoup(subcontent.text, 'html.parser') meta = subcontent.find("meta", property='og:description') # 用find更高效,单页面仅存在一个og:description if meta: # 增加判断避免索引越界报错 description = meta.get('content') print(description)
内容的提问来源于stack exchange,提问作者user4356954
相关产品推荐
相关产品推荐

