BeautifulSoup找不到所有

时间:2016-02-16 09:13:16

标签: 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不像查看网页时那样

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:2)

  

问题出现在find方法中,因为registerHistoryTab不像查看网页时那样

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

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

soup = BeautifulSoup(html, 'lxml')

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

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

另见: