【发布时间】:2018-05-07 20:37:10
【问题描述】:
我正在尝试解析项目names,它对应于下面的sn-p中的values。 dt 标签包含 names 和 dd 包含 values。很少有dt 标签没有对应的values。所以,所有的names 都没有values。如果后者没有任何值,我希望将 values 与任何 name 保持空白。
这些是我想从中抓取数据的元素:
content="""
<div class="movie_middle">
<dl>
<dt>Genres:</dt>
<dt>Resolution:</dt>
<dd>1920*1080</dd>
<dt>Size:</dt>
<dd>1.60G</dd>
<dt>Quality:</dt>
<dd>1080p</dd>
<dt>Frame Rate:</dt>
<dd>23.976 fps</dd>
<dt>Language:</dt>
</dl>
</div>
"""
我试过如下:
soup = BeautifulSoup(content,"lxml")
title = [item.text for item in soup.select(".movie_middle dt")]
result = [item.text for item in soup.select(".movie_middle dd")]
vault = dict(zip(title,result))
print(vault)
它给了我混乱的结果(错误的配对):
{'Genres:': '1920*1080', 'Resolution:': '1.60G', 'Size:': '1080p', 'Quality:': '23.976 fps'}
我的预期结果:
{'Genres:': '', 'Resolution:': '1920*1080', 'Size:': '1.60G', 'Quality:': '1080p','Frame Rate:':'23.976 fps','Language:':''}
我们将不胜感激任何有关解决此问题的帮助。
【问题讨论】:
-
您将两个列表压缩在一起,因此它将匹配
title中的第一个结果和result中的第一个结果,直到最小列表的长度。
标签: python python-3.x web-scraping beautifulsoup