别折磨了 2023-05-08 10:43 采纳率: 57.1%
浏览 8
已结题

搜索栏一次性输入了data的数据,我该怎么去执行一个个输入数据然后反复进行后续操作呢(语言-python)

在搜索栏里面一次性输出了data的值,我需要是一个一个值进行操作

import re
import time
import requests
from time import sleep
from selenium import webdriver
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 NoSuchElementException
import csv


with open('a.csv', 'r') as file:
    reader = csv.reader(file)
    data = list(reader)
driver = webdriver.Firefox()
driver.get('https://www.tianyancha.com/')
driver.find_element(By.CSS_SELECTOR,'.treasure_nav-link__7ErdH').click()
sleep(3)
for row in data:
    driver.find_element(By.CSS_SELECTOR,"input._7c380").send_keys(row)
driver.find_element(By.CSS_SELECTOR,".index_home-suggest-button__GuWyT > span").click()
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0',
    'Referer': 'https://www.tianyancha.com/',
    'Cookie': 'jsid=SEO-BAIDU-ALL-SY-000001; TYCID=83b03e70d99a11edaff321a5cbfd05e4; '
              'sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%22285668898%22%2C%22first_id%22%3A'
              '%22187783a76c9a-0ca1d139855f728-d575429-2073600-187783a76ca66c%22%2C%22props%22%3A%7B%22'
              '%24latest_traffic_source_type%22%3A%22%E8%87%AA%E7%84%B6%E6%90%9C%E7%B4%A2%E6%B5%81%E9%87%8F%22'
              '%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC%22%2C%22'
              '%24latest_referrer%22%3A%22https%3A%2F%2Fwww.baidu.com%2Flink%22%7D%2C%22identities%22%3A%2'
              '…4576; tyc-user-info-save-time=1683278954496; bannerFlag=true; HWWAFSESID=192202628114f7efe79; '
              'HWWAFSESTIME=1683276657901; csrfToken=ktIfQ-X_48aoMG7hj6jkWsbh; '
              'Hm_lpvt_e92c8d65d92d534b0fc290df538b4758=1683276673; '
              'tyc-user-info=%7B%22state%22%3A%220%22%2C%22vipManager%22%3A%220%22%2C%22mobile%22%3A'
              '%2218273703032%22%7D; '
              'auth_token=eyJhbGciOiJIUzUxMiJ9'
              '.eyJzdWIiOiIxODI3MzcwMzAzMiIsImlhdCI6MTY4MzI3ODk2NywiZXhwIjoxNjg1ODcwOTY3fQ'
              '.GcKezvllS_vl1UzhXXZK_4JgqYiFklGkmsZIRv0dg2OZee1oo2H-BSe0LcM16Gju1wfKBoQUMJUNQN4HCvZnWA '
}
try:
    company= driver.find_element(By.CSS_SELECTOR,'.index_alink__zcia5 > span:nth-child(1)').text
    name = driver.find_element(By.CSS_SELECTOR,'div.index_info-col__UVcZb:nth-child(1) > a:nth-child(1)').text
    tel = driver.find_element(By.XPATH,'/html/body/div[1]/div[2]/div/div[2]/section/main/div[2]/div[2]/div/div/div[2]/div[2]/div[4]/div[1]/span[2]/span').text
    address= driver.find_element(By.CSS_SELECTOR,'div.index_contact-row__iYUn6:nth-child(5) > div:nth-child(1) > span:nth-child(2)').text
    print(company, name, tel, address)

except NoSuchElementException:
    pass







#代码无报错,问题是该代码一次性把data里面的数据全部输入了,我需要一个一个去执行

  • 写回答

2条回答 默认 最新

  • Leodong. 2023-05-08 10:52
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
    您可以使用循环,逐个输入data中的值并进行后续操作。以下是修改后的代码示例:

    import re
    import time
    import requests
    from time import sleep
    from selenium import webdriver
    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 NoSuchElementException
    import csv
    
    with open('a.csv', 'r') as file:
        reader = csv.reader(file)
        data = list(reader)
    
    driver = webdriver.Firefox()
    driver.get('https://www.tianyancha.com/')
    driver.find_element(By.CSS_SELECTOR,'.treasure_nav-link__7ErdH').click()
    sleep(3)
    
    for row in data:
        driver.find_element(By.CSS_SELECTOR,"input._7c380").clear() # 清空输入框内容
        driver.find_element(By.CSS_SELECTOR,"input._7c380").send_keys(row) # 输入当前行的值
        driver.find_element(By.CSS_SELECTOR,".index_home-suggest-button__GuWyT > span").click()
        headers = {
            # headers省略
        }
        try:
            company= driver.find_element(By.CSS_SELECTOR,'.index_alink__zcia5 > span:nth-child(1)').text
            name = driver.find_element(By.CSS_SELECTOR,'div.index_info-col__UVcZb:nth-child(1) > a:nth-child(1)').text
            tel = driver.find_element(By.XPATH,'/html/body/div[1]/div[2]/div/div[2]/section/main/div[2]/div[2]/div/div/div[2]/div[2]/div[4]/div[1]/span[2]/span').text
            address= driver.find_element(By.CSS_SELECTOR,'div.index_contact-row__iYUn6:nth-child(5) > div:nth-child(1) > span:nth-child(2)').text
            print(company, name, tel, address)
    
        except NoSuchElementException:
            pass
    
    driver.quit() # 记得关闭浏览器
    

    在修改后的代码中,我们使用了一个for循环来逐个输入data中的值。每次循环开始前,我们先清空输入框中的内容,然后将当前行的值输入到输入框中。接着进行后续操作,等待结果并输出。处理完当前行后,循环开始下一行的处理,直到处理完data中的所有数据。最后,我们记得关闭浏览器。

    希望这个修改后的代码能够对您有所帮助!


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月16日
  • 已采纳回答 5月8日
  • 创建了问题 5月8日

悬赏问题

  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真