对不起这里的新手问题,但我正在尝试通过在Yelp的Eat24.com网站上工作来学习网络抓取。我能够1)让司机到eat24.com,2)选择皮卡,3)搜索位置,4)点击第一个菜单,5)收集菜单项。但是,我无法返回原始的餐馆列表并选择列表中的下一个菜单。这是我的代码:
var process = System.Diagnostics.Process.Start(someFileName);
process.Dispose();
问题是在这里结束,它进入第一个菜单并抓取项目/价格,但当它返回页面时,它不会选择第二个菜单并执行相同的操作。为什么?谢谢你的任何建议!
答案 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]
...