2017-02-27 17 views

回答

2

您可以直接翻译您BeautifulSoup代码到CSS选择器表达式是相当强大的,然后用find_elements_by_css()

# equivalent to : soup.find("div", class_="list-container") 
driver.find_element_by_css("div.list-container") 

# equivalent to : soup.find("div", class_="list-container").find_all("a") 
driver.find_elements_by_css("div.list-container a") 
+0

link = soup.find(“div”,class _ =“list-container”)。find_all(“a”),href = link.get(“href”),上面的代码是可以的。但是你的两个答案都得到了相同的例外...... – mikezang

+0

正如Alex所指出的,你需要学习Selenium的API,阅读文档。在硒中,您可以调用单个webelement上的'get_attribute(“href”)'以获取属性值... – har07

+0

我通过get_attribute得到了它。感谢您的意见。 @ har07 – mikezang

0

这是你在找什么:

elements = [] 
classes = driver.find_elements_by_class(className) 
for c in classes: 
    l = c.find_elements_by_tag_name(tagName) 
    if l: 
     elements.extent(l) 

被equlivent到

soup.findAll("div", { "class" : className}) 
+0

对不起,我的原代码是soup.find(“格”,类_ =“列表容器”)find_all (“a”),所以driver.find_elements_by_class(“list-container”)是否可以? – mikezang

+0

@mikezang你是对的。 –

+0

@mikezang你需要使用for循环来提取'a'。 –

0

如果您需要执行一些任务lik e点击一个按钮,使用硒API。

如果您需要从HTML代码中提取数据,则应使用BeautiflSoup。

您可以使用硒获取HTML代码,然后使用BeautifulSoup解析它。

html_source = browser.page_source 
soup = BeautifulSoup(html_source) 
+0

我的问题是如何避免使用BeautifulSoup ....,如果使用我的代码是可以的VeautifulSoup :) – mikezang

相关问题