我有一些标签,如下所示,他们使用样式为“显示:无”的非标准标签。这些无法解析,因此我想将style="display: none;"
替换为空字符串或style="display: inline;"
。
...
<section id="box3" class="nodisp_zero" style="display: none;">
<h1 id="box_ttl3" style="display: none;"></h1>
<img style="width: 100%; display: none;" id="box_img3" alt="box3" src="https://smtgvs.weathernews.jp/s/topics/img/dummy.png" class="lazy" data-original="https://smtgvs.weathernews.jp/s/topics/img/201808/201808220015_box_img3_A.jpg?1533975785">
<figcaption id="box_caption3" style="display: none;"></figcaption>
<div class="textarea clearfix">
<h2 id="box_subttl3" style="display: none;"></h2>
<div class="fontL" id="box_com3" style="display: none;"></div>
</div>
</section>
...
我尝试使用此代码,但出现错误TypeError: 'NoneType' object is not callable
,该怎么办?
driver.get(href)
soup_level2 = BeautifulSoup(driver.page_source, 'lxml')
soup_level2 = soup_level2.replace(r'display:\s*none', "")
images = soup_level2.find_all('img')
答案 0 :(得分:0)
您可以这样删除样式属性:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc, 'html.parser')
for tag in soup.findAll(lambda tag:tag.has_attr('style')):
tag["style"] = tag["style"].replace("display: none;", "")
或使用简单的正则表达式替换:
html_doc = re.sub(r"display:\s*none;?", "", html_doc, 0)
有几种使用wait for the content to be loaded使用硒的方法,例如
element_present = EC.presence_of_element_located((By.ID, 'element_id'))
WebDriverWait(driver, timeout).until(element_present)