python - BeautifulSoup 未找到全部

标签 python python-2.7 beautifulsoup html-parsing

我有以下源代码尝试解析网页,但是,它似乎没有找到类“row dataraekker”出现的所有实例

cvr = 45963128
url = 'https://datacvr.virk.dk/data/visenhed?enhedstype=virksomhed&id=%s&soeg=%s' % (str(cvr), str(cvr))

rObject = requests.get(url)
html = rObject.content
soup = BeautifulSoup(html, 'html.parser')
registerHistoryTab = soup.find('div', class_="accordion ", id="accordion-Historisk")
dataRows = registerHistoryTab.find_all('div', class_='row dataraekker')
print len(dataRows)

registerHistoryTab 包含具有以下 HTML 的 2 项,其中多个 div 出现“不知从何而来”,因为页面源代码中并非如此

<div class="accordion " data-pdf-class="accordion hide accordion-Historisk" id="accordion-Historisk">
<div class="accordion-group accordion-wrapper">
<div class="accordion-heading">
<div>
<a class="accordion-toggle collapsed" data-parent="#accordion" data-toggle="collapse" href="#collapse_-Historisk">
<h1>Registreringshistorik<div class="text-left help_element help_acc Help-Historisk" data-pdf-class="hide"></div></h1>
</a>
</div>
<!--pdf-linje-->
</div>
<div class="accordion-body collapse" id="collapse_-Historisk">
<div class="accordion-inner" data-pdf-class="sektion">
<div class="aktive-registreringstidende">
<div class="row dataraekker">
<div class="col-sm-12" data-pdf-class="column12">
<b>04.06.2015  Ændring i personkreds</b><br>
<b>CVR-nummer:</b><p>45963128.</p><b>NAVN:</b><p>UNILEVER DANMARK A/S.</p>Adresse: Ørestads Boulevard 73, 2300 København S.<br/>Kommune: København.<br/><b>Bestyrelse:<br/></b><h2>Fratrådte:</h2><p>Jens Christian Voldmester, den 01.06.2015.</p><b>Direktion:<br/></b><h2>Fratrådte:</h2><p>Jens Christian Voldmester, (adm. dir), den 01.06.2015.</p><h2>Tiltrådte:</h2><p>Henrico Drent, (adm. dir), Burgemeester Vogelslaan 63, 5062 KN, Oisterwijk, Holland, den 01.06.2015.</p><hr> </hr></br></div>
</div><div class="row dataraekker">
<div class="col-sm-12" data-pdf-class="column12">
<b>06.03.2015  Øvrige ændringer, Ændring i personkreds</b><br>
<p><b>CVR-nummer: </b>45963128</p><p><b>Navn og adresse: </b></p></br>UNILEVER  DANMARK A/S</div></div></div></div></div></div></div>

问题出现在 find 方法上,因为 registerHistoryTab 与查看网页时的情况不同

感谢任何帮助

最佳答案

The issue appears at the find method because registerHistoryTab is not as it is when viewing the web page

永远不要指望请求返回的 HTML 与您在浏览器中看到的相同。当您处理 HTML 解析时,请使用响应中的内容以及在浏览器中看到的内容。

请注意,在这种情况下,只需将解析器从 html.parser 切换到 lxml 即可解决问题:

soup = BeautifulSoup(html, 'lxml')

现在我看到打印的是 64 而不是 2

请注意,这需要安装lxml:pip install --upgrade lxml

另请参阅:

关于python - BeautifulSoup 未找到全部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35428243/

相关文章:

python - 使用 python datetime.strptime

python - 遍历 openpyxl 中只读工作簿中的列

自转换以来的 Python 时间戳

python - 如何从 Python 列表中删除重复的字典?

unit-testing - 类内部的python单元测试方法

Python 无需批处理即可读取 unicode stdin

python - 使用 openAIgym 渲染时出现奇怪的输出

python - 如何抓取特定区域的产品价格

python web scrape 具有递增的 id

python - Python 3 时来自 BeautifulSoup 的 "illegal multibyte sequence"错误