Selenium - 从列表中的每个项目收集信息

时间:2017-08-14 15:27:38

标签: python python-2.7 selenium selenium-webdriver selenium-chromedriver

对不起这里的新手问题,但我正在尝试通过在Yelp的Eat24.com网站上工作来学习网络抓取。我能够1)让司机到eat24.com,2)选择皮卡,3)搜索位置,4)点击第一个菜单,5)收集菜单项。但是,我无法返回原始的餐馆列表并选择列表中的下一个菜单。这是我的代码:

var process = System.Diagnostics.Process.Start(someFileName);
process.Dispose();

问题是在这里结束,它进入第一个菜单并抓取项目/价格,但当它返回页面时,它不会选择第二个菜单并执行相同的操作。为什么?谢谢你的任何建议!

1 个答案:

答案 0 :(得分:1)

而不是点击每个"查看菜单"按钮,抓取菜单页面并返回结果页面,您可以获取链接列表,然后逐个抓取每个菜单页面:

menu_urls = [page.get_attribute('href') for page in driver.find_elements_by_xpath('//*[@title="View Menu"]')]
for url in menu_urls:
    driver.get(url)
    menu_items = driver.find_elements_by_class_name("cpa")
    menus = [x.text for x in menu_items]
    ...