gpt4 book ai didi

python - 如何点击 https ://www. airdna.co/上的第一个自动建议或第一个搜索值

转载 作者:行者123 更新时间:2023-12-01 01:46:25 32 4
gpt4 key购买 nike

我正在尝试从网站上抓取数据 https://www.airdna.co

我想获取第一个建议的值我管理了以下代码;问题是我无法点击第一个城市来获取信息有人可以提出解决这个问题的建议

#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
import time
import csv
import unittest
import sys
import datetime
import os.path
import pandas as pd


from datetime import datetime
from selenium import webdriver
from bs4 import NavigableString
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support import expected_conditions
from selenium.common.exceptions import WebDriverException
from bs4 import BeautifulSoup
from bs4.element import Tag
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.remote.errorhandler import ErrorHandler
from unidecode import unidecode
import unicodecsv


class MyTestCase():
def setUp(self):
self.driver = webdriver.Chrome()
#self.driver.error_handler = MyHandler()

def main(self):
REGION=[]
INSEE=[] #la liste des départements
CITIES=[]
with open('3000Commun_France.csv') as csvfile:
csv_reader = csv.reader(csvfile)
next(csv_reader) # supression des entêtes
for row in csv_reader:
REGION.append(row[0])
INSEE.append(row[1])
CITIES.append(row[2])
self.driver = webdriver.Chrome()
driver=self.driver
for insee,city in zip(INSEE,CITIES):
print str(city) +" , "+str(insee)
try:
driver.get("https://www.airdna.co/")
driver.implicitly_wait(20)
driver.find_element_by_css_selector("#searchbox_home").send_keys(city+",FR") # Enter city
# Wait until autosuggestion come and click on first suggestion
condition = EC.visibility_of_element_located((By.CSS_SELECTOR, '#searchbox_home + ul > li:nth-child(1)'))
time.sleep(3)
WebDriverWait(driver, 5).until(condition).click()
page = driver.page_source
soup = BeautifulSoup(page, "lxml")
except NavigableString:
pass
if __name__ == "__main__":
sys.tracebacklimit = 0
MyTestCase().main()

enter image description here

最佳答案

根据您的问题在您发送搜索相关后,在网站https://www.airdna.co/内获取第一个建议的值(value) >字符序列您需要引发WebDriverWait以使所需的元素可见/可点击,您可以使用以下解决方案:

  • 代码块:

    driver.get("https://www.airdna.co/")
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR,"input.ui-autocomplete-input"))).send_keys("la roch")
    print(WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"ul.ui-menu.ui-widget.ui-widget-content.ui-autocomplete.ui-front>li>div"))).get_attribute("innerHTML"))
  • 控制台输出:

    La Rochelle, FR
  • 浏览器快照:

first_suggestion

<小时/>

如果您想点击第一个自动建议,您可以使用:

  • 代码块:

    driver.get("https://www.airdna.co/")
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR,"input.ui-autocomplete-input"))).send_keys("la roch")
    print(WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"ul.ui-menu.ui-widget.ui-widget-content.ui-autocomplete.ui-front>li>div"))).get_attribute("innerHTML"))
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"ul.ui-menu.ui-widget.ui-widget-content.ui-autocomplete.ui-front>li>div"))).click()
  • 控制台输出:

    La Rochelle, FR
  • 浏览器快照:

click_first_suggestion

关于python - 如何点击 https ://www. airdna.co/上的第一个自动建议或第一个搜索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51285004/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com