如何使用Selenium修改python代码



所有详细信息都打印出来了,但问题是在这个过程中我使用了许多for循环。如何克服这个问题并处理for环路?我试图摆脱许多for循环,但我失败了。这是我的链接:https://www.foodpanda.pk/restaurants/new?lat=24.9414896&lng=67.1676002&垂直=餐厅请对此进行修改。它运行良好。

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')
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)

最新更新