【问题标题】:How do I iterate and visit each link in a list using selenium and python? How do I click on each link on a Yelp page如何使用 selenium 和 python 迭代和访问列表中的每个链接?如何点击 Yelp 页面上的每个链接
【发布时间】:2022-01-25 02:58:34
【问题描述】:

我很想访问这个 yelp 页面上每个链接文本中包含饺子的链接。

Picture of List of Links on yelp

这里是代码。我到了第二页,但不确定如何点击每个链接。我希望每个链接都以新的形式打开。但只有饺子。谢谢你。希望这是有道理的。

all_links = []

#yelp page
driver.get("https://yelp.com");

#Selecting the first box
 type_of_food = driver.find_element_by_id('find_desc')

#Enter Chinese Food
type_of_food.send_keys('Chinese Food');

#press enter
type_of_food.send_keys(Keys.ENTER);


driver.implicitly_wait(30)
#Button click

driver.find_element_by_id("header-search-submit").click()


driver.implicitly_wait(9)



driver.find_element_by_partial_link_text('Dumpling')

for link in all_links:
    links.append(link.get_attribute('href'))

【问题讨论】:

  • `我希望每个链接都以新的方式打开。`这是什么意思?是否要在新窗口中打开每个链接?

标签: python selenium selenium-webdriver


【解决方案1】:

我不确定你的代码是否正确。

A.您已在搜索区域输入Chinese Food,然后键入ENTER,然后再次单击Search 按钮。但只有他们中的一个会这样做。两者似乎都不是必需的。

B. for link in all_links: 我不明白您为什么要遍历已声明的空白列表(顶部声明的列表:all_links = [])。它里面没有任何东西。假设您正在尝试链接饺子元素,我已将您的代码重构为以下内容:

all_links = []
#yelp page
driver.get("https://yelp.com")
#Selecting the first box
type_of_food = driver.find_element(By.ID, 'find_desc')
#Enter Chinese Food
type_of_food.send_keys('Chinese Food')
#press enter
# type_of_food.send_keys(Keys.ENTER)
driver.implicitly_wait(30)
#Button click
driver.find_element(By.ID, "header-search-submit").click()
driver.implicitly_wait(9)
dumplings = driver.find_elements(By.PARTIAL_LINK_TEXT, 'Dumpling')
for item in dumplings:
    all_links.append(item.get_attribute('href'))
    # Replace CONTROL with COMMAND if you are on Mac
    ActionChains(driver).key_down(Keys.CONTROL).click(item).key_up(Keys.CONTROL).perform()
    

print(all_links)

输出:

['https://www.yelp.com/biz/dumpling-kitchen-san-francisco?osq=Chinese+Food', 'https://www.yelp.com/biz/dumpling-house-san-francisco?osq=Chinese+Food', 'https://www.yelp.com/biz/dumpling-baby-china-bistro-san-francisco-4?osq=Chinese+Food', 'https://www.yelp.com/search?find_desc=Dumplings&find_loc=San+Francisco%2C+CA']

Process finished with exit code 0

【讨论】:

  • 谢谢!你惊人的!我也希望所有这些都在不同的选项卡中打开。这可能吗?
  • @gabi145,在我的回答中添加了一行。请检查最后一行,它应该可以工作。另外,如果答案对您有用,请接受。谢谢!
  • driver.implicitly_wait(30) 可能想要切换到 webdriver 等待。
  • 我想给你点赞。但我没有足够的积分。我只需要另外四个,所以我发布了另一个问题来尝试寻求帮助。但是有人否决了我的另一个问题。因为没有在这里投票给你。我的帐户不允许我投票?不过还是谢谢你。当我获得足够的积分时,我会投票感谢您的帮助。 @AnandGautam
  • 为什么要切换@ArundeepChohan。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多