【问题标题】:Scraping other elements from a tag in Selenium从 Selenium 中的标签中抓取其他元素
【发布时间】:2021-05-01 07:52:57
【问题描述】:
网页上的脚本如下:
<td class="bc bs o" data-bk="B3" data-odig="7.5" data-o="13/2" data-hcap="" data-fodds="7.5" data-ew-denom="4" data-ew-places="5"><p>7.5</p></td>
我想提取 Selenium 驱动程序中所有 td 标记的“data-bk”和“data-odig”值。我知道每个 td 标签都有 'data-bk' 和 'data-odig' 值,但我不知道每个标签的它们是什么(“B3”“7.5”)。我想打印“data-bk”值列表(“B3”等)。我尝试了以下方法:
answer = driver.find_element_by_css_selector('td[data-bk]')
print(answer.text)
但这不起作用
【问题讨论】:
标签:
python
selenium
web-scraping
css-selectors
webdriver
【解决方案1】:
driver.find_element_by_xpath('//td[@data-bk="B3"]')
driver.find_element_by_css_selector('td[data-bk="B3"]')
你可以使用 css 或 xpath
xpath 语法是
//tag[@attribute="attribute-value"]
CSS 语法是
tag[attribute="attribute_value"]
**
所以你可以使用任何属性,不仅是 id 或 name
**
【解决方案2】:
从所有td标签中获取data-bk和data-odig的值
首先你需要使用
find_elements_by_css_selector() 将返回 list 的元素,然后你需要 iterate
其次要获取attribute value你需要使用element.get_attribute("attributename")
代码:
Databk=[item.get_attribute("data-bk") for item in driver.find_elements_by_css_selector("td[data-bk][data-odig]")]
DataOdig=[item.get_attribute("data-odig") for item in driver.find_elements_by_css_selector("td[data-bk][data-odig]")]
print(Databk)
print(DataOdig)
这将返回data-bk 和data-odig 的列表