如何在 BeautifulSoup 中使用其样式定义(如填充、字体大小等)对元素进行 Web 抓取
Posted
技术标签:
【中文标题】如何在 BeautifulSoup 中使用其样式定义(如填充、字体大小等)对元素进行 Web 抓取【英文标题】:How do I web scrape an element using its style definitions like padding, font-size etc. in BeautifulSoup 【发布时间】:2020-04-15 02:59:27 【问题描述】:我想使用其样式属性padding-left: 16px
提取一个 div,类似于以下 Python 代码所示。但显然它不起作用。我知道如何使用它的类、id 或标签来提取元素。有没有办法使用样式属性做同样的事情?
from bs4 import BeautifulSoup
f = open("C:\Users\admin\Documents\GitHub\RedditCrawler\new.html");
soup = BeautifulSoup(f);
f.close();
hr2 = soup.find('div', style="padding-left":"16px");
print(hr2);
以下是我试图从我的 html 文件中提取的 div:
<html>
<div style="padding-left:16px;">This is the deal</div>
</html>
【问题讨论】:
其中一个应该可以工作***.com/a/23584775/1289093***.com/a/35140202/1289093 @yolabingo 感谢您的快速回复。第一个链接对我有用。奇怪的是,即使我已经在这里搜索了很长时间,我也找不到已经回答过的类似问题。 【参考方案1】:使用 CSS 选择器获取 div 元素。
soup.select_one('div[style="padding-left:16px;"]')
代码:
from bs4 import BeautifulSoup
html='''<html>
<div style="padding-left:16px;">This is the deal</div>
</html>'''
soup=BeautifulSoup(html,'html.parser')
#To get the element
print(soup.select_one('div[style="padding-left:16px;"]'))
#To get the text
print(soup.select_one('div[style="padding-left:16px;"]').text)
#To get the style value
print(soup.select_one('div[style="padding-left:16px;"]')['style'])
输出:
<div style="padding-left:16px;">This is the deal</div>
This is the deal
padding-left:16px;
【讨论】:
以上是关于如何在 BeautifulSoup 中使用其样式定义(如填充、字体大小等)对元素进行 Web 抓取的主要内容,如果未能解决你的问题,请参考以下文章