【问题标题】:Unable to print foodpanda product links using selenium python无法使用 selenium python 打印 foodpanda 产品链接
【发布时间】:2021-07-06 15:35:43
【问题描述】:

因为我想从 href 标记中提取链接,但它没有打印来自 https://www.foodpanda.pk/restaurants/new?lat=24.9414896&lng=67.1676002&vertical=restaurants 的任何结果

from selenium import webdriver
driver = webdriver.Chrome('F:/chromedriver')
driver.get("https://www.foodpanda.pk/restaurants/new?lat=24.9414896&lng=67.1676002&vertical=restaurants")
# response = scrapy.Selector(text=driver.page_source)
list = driver.find_elements_by_css_selector("ul.vendor-list li")
length = len(driver.find_elements_by_css_selector("ul.vendor-list li"))
for i in range(length):
    try:
        
        name = driver.find_elements_by_css_selector(".headline .name")[i].text
        time = driver.find_elements_by_css_selector(".badge-info")[i].text.strip()
        rating = driver.find_elements_by_css_selector(".rating")[i].text
        dealtag = driver.find_elements_by_css_selector(".multi-tag")[i].text
        link = driver.find_elements_by_css_selector(".vendor [href]")[i].text

        print(name,link,time,rating,dealtag)
    
    except:
        pass

【问题讨论】:

  • 我们的回答解决了您的问题吗?

标签: python selenium beautifulsoup python-requests webdriver


【解决方案1】:

请阅读代码,此代码在我的电脑上运行良好。

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 30)

driver.get('https://www.foodpanda.pk/restaurants/new?lat=24.9414896&lng=67.1676002&vertical=restaurants')

Vendor_list = driver.find_elements_by_xpath("//figure[@class=\"vendor-tile item\"]/ancestor::li")

for vendor in Vendor_list:
    print("-------------------")
    print("Restaurant Name :- " + vendor.find_element_by_xpath(".//span[@class=\"name fn\"]").text)
    print("Badge :- " + vendor.find_element_by_xpath(".//span[@class=\"badge-info\"]").text[:2] +
          vendor.find_element_by_xpath(".//span[@class=\"badge-info\"]/span").text)
    try:
        print("Rating :- " + vendor.find_element_by_xpath(".//span[@class=\"rating\"]").text)
    except:
        print("No Rating Available")

    try:
        print("Muti Tag :- " + vendor.find_element_by_xpath(".//span[@class=\"multi-tag\"]").text)
    except:
        print("No Tag Info")

    print("Vendor URL :- " + vendor.find_element_by_xpath(".//a").get_attribute("href"))

如果它解决了您的问题,请标记为答案。

【讨论】:

    【解决方案2】:

    那里没有确切类名vendor的元素。
    你应该使用类似//*[contains(@class,'vendor')]//a[@href]
    我使用了Xpath,因为我更喜欢使用它,但你也可以使用类似的css_selector

    【讨论】:

      猜你喜欢
      • 2021-06-26
      • 2021-06-28
      • 2021-06-29
      • 1970-01-01
      • 2021-06-06
      • 2019-10-18
      • 2022-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多