对于我的项目,我需要为我将通过解析找到的给定元素提取CSS选择器。我做的是导航到一个页面与selenium然后使用python-beautiful汤我解析页面,并找出是否有任何元素,我需要CSS选择器。 例如,我可能会尝试找到任何带有id" print"。
的输入标签 soup.find_all('input', {'id': 'print')})
如果我设法找到这样一个元素,我想取其提取的CSS选择器,类似于"输入#print"。我不仅仅发现使用id,而且还包括类和正则表达式的组合。 有没有办法实现这个目标?
答案 0 :(得分:2)
试试这个。
from scrapy.selector import Selector
from selenium import webdriver
link = "https://example.com"
xpath_desire = "normalize-space(//input[@id = 'print'])"
path1 = "./chromedriver"
driver = webdriver.Chrome(executable_path=path1)
driver.get(link)
temp_test = driver.find_element_by_css_selector("body")
elem = temp_test.get_attribute('innerHTML')
value = Selector(text=elem).xpath(xpath_desire).extract()[0]
print(value)
答案 1 :(得分:1)
好的,我是Python新手,所以我相信有更好的答案,但这是我的两分钱:))
import requests
from bs4 import BeautifulSoup
url = "https://stackoverflow.com/questions/49168556/extract-css-selector-for-
an-element-with-selenium"
element = 'a'
idName = 'nav-questions'
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
tags = soup.find_all(element, id = idName)
if tags:
for tag in tags :
getClassNames = tag.get('class')
classNames = ''.join(str('.' + x) for x in getClassNames)
print element + '#' + idName + classNames
else:
print ':('
这会打印出如下内容:
a#nav-questions.-link.js-gps-track