Python 3.x 需要帮助使用bs4/python在没有div的情况下从网页中刮取一段松散的文本吗

Python 3.x 需要帮助使用bs4/python在没有div的情况下从网页中刮取一段松散的文本吗,python-3.x,Python 3.x,我从上周开始学习python,我需要在网站上搜集有关城市的信息。我设法抓取了整个网站,但我无法在每个城市网页中抓取我需要的特定文本信息(这里是其中一个城市信息的url()) 这是我工作的地方 <div class="constructeur"> <b>Village: </b>Abbécourt <br/> <b>Population :</b> 536 habitants <br/> <

我从上周开始学习python,我需要在网站上搜集有关城市的信息。我设法抓取了整个网站,但我无法在每个城市网页中抓取我需要的特定文本信息(这里是其中一个城市信息的url())

这是我工作的地方

<div class="constructeur">
<b>Village: </b>Abbécourt <br/>
<b>Population :</b> 536 habitants <br/>
<b>Département :</b> Aisne <br/>
<b>Code postal :</b> 02300 <br/>
</div>
但是它只打印
[




]

在查看bs4文档时,我尝试了

b = li.findAll('br.next_element')
b = li.findAll('br.previous_element')
但它不起作用。我仍在寻找bs4文档的解决方案,但与此同时,如果有人愿意帮助我,那就太棒了。

b=[I.next\u sibling.strip(),我在page\u soup.select('div.constructeur>b')]
与其查找父元素,不如只查找您真正关心的子元素,这是使用bs4的CSS选择器(
.select
)完成的,字符串“div.constructeur>b”表示的是使用类constructeur获取div元素中的所有粗体标记,这将返回一个列表

使用列表理解遍历该b标记列表,抓取b标记的下一个兄弟,这将是您想要的数据,去掉文本,因为它有一堆空白


li.findAll('br.next_element')
不起作用的原因是该函数对标记对象进行操作,该对象包含在
.findAll
返回的列表中

你想要的是

b=li.findAll('br'))
b=[i.previous_element.strip()表示b中的i]
b=[i.next\u sibling.strip()表示第i页中的i。选择('div.constructeur>b')]
与其查找父元素,不如只查找您真正关心的子元素,这是使用bs4的CSS选择器(
.select
)完成的,字符串“div.constructeur>b”表示的是使用类constructeur获取div元素中的所有粗体标记,这将返回一个列表

使用列表理解遍历该b标记列表,抓取b标记的下一个兄弟,这将是您想要的数据,去掉文本,因为它有一堆空白


li.findAll('br.next_element')
不起作用的原因是该函数对标记对象进行操作,该对象包含在
.findAll
返回的列表中

你想要的是

b=li.findAll('br'))
b=[i.previous_element.strip()表示b中的i]
b = li.findAll('br.next_element')
b = li.findAll('br.previous_element')