【问题标题】:How to modify the python code using Selenium?如何使用 Selenium 修改 python 代码?
【发布时间】:2021-07-04 07:08:02
【问题描述】:

所有详细信息都已打印,但问题是我使用了许多 for 循环。如何克服这个问题并处理for循环?我试图摆脱许多for 循环,但我失败了。 这是我的链接:https://www.foodpanda.pk/restaurants/new?lat=24.9414896&lng=67.1676002&vertical=restaurants 请修改这个。它工作正常。

import time
import requests
from bs4 import BeautifulSoup
import pandas as pd
import numpy as np

from selenium import webdriver

url= "https://www.foodpanda.pk/restaurants/new?lat=24.9414896&lng=67.1676002&vertical=restaurants"
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ['enable-automation'])
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_argument(
    "user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36")
options.add_argument("--remote-debugging-port=9222")
driver = webdriver.Chrome('F:/chromedriver',options=options)
options.add_experimental_option("excludeSwitches", ['enable-automation'])
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_argument(
    "user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36")
options.add_argument("--remote-debugging-port=9222")
driver.get(url)
panda =[]


[print(name.text) for name in driver.find_elements_by_css_selector(
    ".vendor-list .headline .name")]
[print(expectetime.text) for expectetime in driver.find_elements_by_css_selector(
    ".badge-info")]
try:
    [print(dealtag.text) for dealtag in driver.find_elements_by_css_selector(
        ".tag-container .multi-tag ")]
except:
    dealtag=''
try:
    [print(rating.text) for rating in driver.find_elements_by_css_selector(
        ".rating")]
except:
    rating=''

foodpanda={
    'Shop_name':name,
    'delivery_time': expectetime,
    'Deal_tag':dealtag,
    'Rating':rating

}
panda.append(foodpanda)
df = pd.DataFrame(panda)
print(df.head())
df.to_csv('foodpanda.csv')

【问题讨论】:

    标签: python selenium beautifulsoup python-requests webdriver


    【解决方案1】:
    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
        except:
            pass
        print(name,time,rating,dealtag)
    

    【讨论】:

      猜你喜欢
      • 2017-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2010-10-06
      • 2020-10-10
      • 2011-06-24
      相关资源
      最近更新 更多