Python Bs4只获取部分html标记集
我正在抓取一个下拉列表中包含标签的html。我正在查找选定的项目,即具有选定属性的标记。 据我所知,这段代码应该可以做到:Python Bs4只获取部分html标记集,python,beautifulsoup,Python,Beautifulsoup,我正在抓取一个下拉列表中包含标签的html。我正在查找选定的项目,即具有选定属性的标记。 据我所知,这段代码应该可以做到: soup_1 = bs(result_1.content,'lxml') title = soup_1.find('select', {'id':'id_document'}) title2 = title.findAll('option') for tit in title2: print(tit) if t
soup_1 = bs(result_1.content,'lxml')
title = soup_1.find('select', {'id':'id_document'})
title2 = title.findAll('option')
for tit in title2:
print(tit)
if tit.has_attr('selected'):
print("found")
print(tit.getText())
但是列表很长,控制台显示的记录超过5000条,而bs/lxml似乎只扫描其中的29条
有没有一种方法可以让it扫描所有这些内容,或者有一种更有效的方法来执行搜索?我四处搜索了一下,但除了与旧bug的模糊相似性之外,我找不到原因或解决方案
我还尝试了查找'select',{'selected':},但所有记录似乎都满足条件,即使只有一条记录在html中有效地具有该属性。我无法理解通过find搜索是否会检查所有条目,或者是否面临相同的限制
谢谢
编辑:
下面是我试图从中提取信息的html的一部分/示例:
<select name="document" id="id_document" required>
<option value="">---------</option>
<option value="294">Tutorials | Inkscape</option>
<option value="241">Traduzione testo Mean - Taylor wift</option>
<option value="243">http://www.angularjsbook.com/angular-basics/chapters/basics/</option>
<option value="2521">script WLF 101 - Google Docs</option>
<option value="290">LyX wiki | Layouts / Layouts</option>
<option value="257">10Part2Chap7</option>
<option value="296">Inkscape tutorial: Advanced | Inkscape</option>
<option value="261">http://www.bankofengland.co.uk/banknotes/Pages/about/faqs.aspx</option>
<option value="273">Nuvolaverde - Home</option>
<option value="240">BLACK EYED PEAS LYRICS - Where Is The Love?</option>
<option value="2527">How to Start a Blog In The Most Cluttered Marketplace In History</option>
<option value="2528">3 Simple Steps to Silencing Your Inner Critic – Matthew E. May – Medium</option>
.... (some 5K more lines)
<option value="4082">Lietuva - Prancūzija Tiesiogiai. Rugsėjo 7 d. 15:00 val. | TVPlay</option>
<option value="4083">Google Calendar - settembre 2019</option>
<option value="4084">Google Calendar - settembre 2019</option>
<option value="4085" selected>Estructura de datos</option>
</select>
页面的源代码(选项列表的最后一行仅选择了属性)与控制台(同一属性显示为selected)之间存在有趣的差异=我们验证了代码用于识别所选选项,即使选项数量很大,作为字符串输入以进行测试
from bs4 import BeautifulSoup
content =''' <String of text sent via pastebin here>
'''
soup_1 = BeautifulSoup(content, 'lxml')
title = soup_1.find('select', {'id': 'id_document'})
title2 = title.findAll('option')
for tit in title2:
if tit.has_attr('selected'):
print("found")
print(tit.getText())
在我们的聊天中,我们确定问题可能是从网站上抓取标签,而不是处理数据。任何其他偶然发现这一点的人都应该检查他们的request.content或content是否确实包含他们希望获取的信息 我们可以看到您试图扫描的一些内容吗?当然可以,补充道。我本以为猜测html会有点困难。这足以理解@MatthewGaiser吗?这似乎很好地解释了这一点。我主要是想复制错误,而不是你给我的30条左右的记录。好吧,我用大约600条记录创建了一个粘贴库,最后一个也是选中的一个:让我知道它是否有用。你可以将所有这些浓缩到汤中。选择“一个'id'u document[selected]”。text