我从使用Selenium拖动页面开始,我相信我使用以下代码正确地将页面中需要的部分传递给BeautifulSoup:
soup = BeautifulSoup(driver.find_element("xpath", '//*[@id="version_table"]/tbody').get_attribute('outerHTML'))
现在我可以使用BeautifulSoup进行解析
query = soup.find_all("tr", class_=lambda x: x != "hidden*")
print (query)
我的问题是,我需要深入挖掘,而不仅仅是这一个查询。例如,我想将这一个嵌套在第一个查询中(因此第一个查询必须为真,然后是这一个):
query2 = soup.find_all("tr", id = "version_new_*")
print (query2)
从逻辑上讲,这就是我要做的(但是我得到了SyntaxError:无效语法):
query = soup.find_all(("tr", class_=lambda x: x != "hidden*") and ("tr", id = "version_new_*"))
print (query)
我该如何完成这项工作?
3条答案
按热度按时间ktecyv1j1#
关于:
query = soup.find_all(...) and print (query)
find_all
将返回一个可迭代类型。可迭代类型可以被迭代。ltqd579y2#
您可以对每个元素使用lambda函数(沿着regex)来进行一些高级条件处理
对于html中的每个元素,我们都在检查...
1.如果标记是表格行(tr)
1.如果标记有id并且该id与模式匹配
1.如果标记具有类并且该类与模式匹配
fdbelqdn3#
如前所述,没有任何例子,这是很难帮助或给予一个准确的答案-然而,你可以使用
css selector
:示例
输出
将是一个
ResultSet
,你可以迭代来刮你需要的东西。