使用Selenium和Python拉出多个字符串

时间:2016-11-15 23:47:22

标签: python-2.7 selenium-webdriver web-scraping

我试图通过刮取食物上的餐馆名称;然而它证明是困难的,因为第一个字符串是Eater给它的排名(例如1,2,3等)。如下面的HTML中所示:

<h2>
<span class="c-mapstack__card-index">1</span> 
Merkelbach</h2>

我的代码目前抓住了1,这很好,但是我必须抓住餐馆的名字。所以我想抓住Merkelbach&#34;。我的代码如下,任何见解都会很棒。

from selenium import webdriver

driver = webdriver.Chrome('C:\Python27\Chromedriver\chromedriver.exe')

driver.get('http://www.eater.com/maps/best-amsterdam-restaurants')
for elem in driver.find_elements_by_xpath('.//span[@class = "c-mapstack__card-index"]'):
    print elem.text

2 个答案:

答案 0 :(得分:0)

您想要访问h2中的文本,spanh2的父级。您可以通过使用/..附加xpath从xpath中选择父级来访问from selenium import webdriver driver = webdriver.Chrome('C:\Python27\Chromedriver\chromedriver.exe') driver.get('http://www.eater.com/maps/best-amsterdam-restaurants') for elem in driver.find_elements_by_xpath('.//span[@class = "c-mapstack__card-index"]/..'): print elem.text

{{1}}

请注意,这将包含数字和名称,您可以自己拆分,或使用之前的xpath获取跨度的文本并将其从父文本中删除

答案 1 :(得分:0)

  

我的代码目前抓住1,这很好,但我必须抓住餐厅的名称

您应该找到<h2>元素而不是<span>,如下所示: -

for elem in driver.find_elements_by_xpath('.//h2[span[@class = "c-mapstack__card-index"]]'):
    print elem.text