Web scraping 如何将web元素传递到BeautifulGroup
我得到了这样的web元素Web scraping 如何将web元素传递到BeautifulGroup,web-scraping,beautifulsoup,request,Web Scraping,Beautifulsoup,Request,我得到了这样的web元素 elements = browser.find_elements_by_xpath("//*[contains(text(), 'Open Until')]") 现在我必须将这个元素传递给soup,以找到它的下一个&上一个兄弟。我正在尝试这个 soup = BeautifulSoup(elements,'html.parser') 我应该写什么 ??? soup = BeautifulSoup(elements.source,'html.parser') ???
elements = browser.find_elements_by_xpath("//*[contains(text(), 'Open Until')]")
现在我必须将这个元素传递给soup,以找到它的下一个&上一个兄弟。我正在尝试这个
soup = BeautifulSoup(elements,'html.parser')
我应该写什么
??? soup = BeautifulSoup(elements.source,'html.parser') ???
请建议这应该是一个评论,但我无法添加一个。 因此,它应该是: soup=BeautifulSoup(elements.parent.page_源代码'html.parser') 或 直接从浏览器创建汤: soup=BeautifulSoup(browser.page_源代码'html.parser') 然后搜索并获取汤中的元素
在或中没有关于这方面的信息。这应该是一条评论,但我无法添加一条。 因此,它应该是: soup=BeautifulSoup(elements.parent.page_源代码'html.parser') 或 直接从浏览器创建汤: soup=BeautifulSoup(browser.page_源代码'html.parser') 然后搜索并获取汤中的元素
在或中没有关于这方面的信息,您不需要混合,也不能混合,例如,selenium还有获取上一个和下一个兄弟姐妹的方法
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://140f670e-5774-43b5-a1a5-c993f66fa51d.htmlpasta.com/')
element = driver.find_element_by_xpath("//*[contains(text(), 'Open Until')]")
prevSibling = element.find_element_by_xpath('.//preceding-sibling::*')
nextSibling = element.find_element_by_xpath('.//following-sibling::*')
print(prevSibling.tag_name + ': ' + prevSibling.text)
print(element.tag_name + ': ' + element.text)
print(nextSibling.tag_name + ': ' + nextSibling.text)
driver.close()
您不需要混合,也不能混合,例如,selenium还有获取上一个和下一个兄弟姐妹的方法
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://140f670e-5774-43b5-a1a5-c993f66fa51d.htmlpasta.com/')
element = driver.find_element_by_xpath("//*[contains(text(), 'Open Until')]")
prevSibling = element.find_element_by_xpath('.//preceding-sibling::*')
nextSibling = element.find_element_by_xpath('.//following-sibling::*')
print(prevSibling.tag_name + ': ' + prevSibling.text)
print(element.tag_name + ': ' + element.text)
print(nextSibling.tag_name + ': ' + nextSibling.text)
driver.close()
selenium返回的元素的形式为
selenium WebElements
,而不是html
。
需要将WebElements
转换为HTML,以便BeautifulSoup
能够对其进行解析
#网络元素列表
elements=browser。通过xpath(“/*[contains(text(),'Open Until')]”查找元素
#迭代找到的所有元素
对于元素中的WebElement:
elementHTML=WebElement.get_属性('outerHTML')#给出元素的确切HTML内容
elementSoup=beautifulsou(elementHTML,'html.parser')
打印(元素汤)
selenium返回的元素的形式为selenium WebElements
,而不是html
。
需要将WebElements
转换为HTML,以便BeautifulSoup
能够对其进行解析
#网络元素列表
elements=browser。通过xpath(“/*[contains(text(),'Open Until')]”查找元素
#迭代找到的所有元素
对于元素中的WebElement:
elementHTML=WebElement.get_属性('outerHTML')#给出元素的确切HTML内容
elementSoup=beautifulsou(elementHTML,'html.parser')
打印(元素汤)
我不明白你的答案。你能澄清一下吗。我有两个元素在“Open-Until”元素的上方和下方。我应该在x_Path.previsibling=element.find_element_by_xpath('.//前面的兄弟姐妹::p')nextSibling=element.find_element_by_xpath('.//后面的兄弟姐妹::p')中具体写什么我是用这种方式写的,但找不到。发布你的html代码片段我不明白你的答案。你能澄清一下吗。我有两个元素在“Open-Until”元素的上方和下方。我应该在x_Path.previsibling=element.find_element_by_xpath('.//前面的兄弟姐妹::p')nextSibling=element.find_element_by_xpath('.//后面的兄弟姐妹::p')中具体写什么我是用这种方式写的,但找不到它。发布你的html代码片段我正在完成父元素,而我需要它的上一个和下一个同级。你能告诉我具体的解决方案吗?我正在完成父元素,而我需要它的前一个和下一个同级。你能告诉我具体的解决办法吗。