gpt4 book ai didi

python - 从网页发送和接收数据 - Selenium WebDriver API

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

这篇文章/问题是 initial post that I asked a few or some days ago 的第二部分

(非常感谢 @alecxe 对 selenium webdriver api 基础知识的精彩解释)

我有以下读取文件的脚本(其中列出了两个以上的单词或字符串)

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
# Website application that I want reach for process data
driver.get("http://tip.iatext.ulpgc.es/silabas/Default.aspx")

# Open the file for read it.
with open('Diccionario.txt','r') as f:
list = []

# Browse the file and turn on at list
for item in f:
list.append(item)
print (list)

# Setup the len of list
amount = (len(list))
#print (amount)

# I get the first item of the list
current_word = list[0]
#print (current_word)

# Send string through selenium WebDriver API
elem = driver.find_element_by_id("MainContent_TextBox1")
elem.send_keys(current_word)

#elem.send_keys(Keys.RETURN)
f.close()

# Locate the element (tag, css, etc) by which I want ask for receive information
result = driver.find_element_by_css_selector(
"table#MainContent_Table1 > tbody > tr > td:nth-of-type(2)").text
print(result)

# Write the information received in a text file
newfile = open('output.txt','a')
newfile.write(result)
newfile.close()

目前我正在发送列表中的一项(列表中转换的文件的一个字符串或一个单词)如果您愿意,我们可以在此视频 demo 中查看演示或工作流程

我想将 n 个项目发送到此站点(Silabes 除法应用程序)并接收在我的脚本/演示中处理的每一个项目。

为了这个目标,我一直在思考以下几点:

(查看 ############ 新代码或思考 ######### 部分)

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get("http://tip.iatext.ulpgc.es/silabas/Default.aspx")

with open('Diccionario.txt','r') as f:
list = []
for item in f:
list.append(item)
print (list)

amount = (len(list))
#print (amount)
i=0

############ New code or kind of think #########

while amount > 0:
print ("Value position", i)

# I get the first item on list
current_word = list[i]
print(current_word)
############ -- #####
# Send the data to the web site silabes divide application
elem = driver.find_element_by_id("MainContent_TextBox1")
elem.send_keys(current_word)
#elem.send_keys(Keys.RETURN)
f.close()

#Ask for the result inside specifics tags or css
result = driver.find_element_by_css_selector("table#MainContent_Table1 > tbody > tr > td:nth-of-type(2)").text
print("My word sent is:", " ", current_word + '\n'
"The word divide in silabes is:", " ", result)
# Increment i
i+=1
print(i)

#Write the results into a file
newfile = open('output.txt','a')
newfile.write('\n' + '\n' + "My word sent is:" + " " + current_word +
" " + "The word divide in silabes is:" + " " + result)
newfile.close()

使用 while 指令,我的脚本将所有单词发送到应用程序,以便处理这些单词并逐一返回。查看new demo (如果你愿意的话)

我确实想分享这篇文章,并向大家询问以下问题:

  1. 还有其他方法(可能是更优化的)执行相同的操作吗?也许是列表理解?

  2. 这里介绍的 while 循环是一个无限循环...我可以改进此代码部分,例如让我的脚本以正确的方式完成吗?我猜想当 i 等于最后一个位置时...可能我的脚本崩溃,尽管在这些措施中, amount 变量总是 eb 大于 cero ...

  3. 我应该以更好的方式呈现结果,分割返回的 silabes 单词

任何观察、建议或建议(Python 最佳实践、想法或任何相关内容),我们将不胜感激。

感谢并为这么长的帖子表示歉意。 :)

最佳答案

  1. 这里不需要列表理解,因为您只需要迭代列表即可。这可以通过一个简单的 for 循环来完成。
  2. amount 始终是项目的数量,并且永远不会改变。所以你永远不会停止进入 while 循环。
  3. 最后有一个代码示例。

考虑到这一点,我建议您应该保持代码干净、一致且简短。更简洁的代码示例:

with open('Diccionario.txt', 'r') as input, \
open('output.txt', 'w') as output:
for item in input:
element = driver.find_element_by_id("MainContent_TextBox1")
element.send_keys(item)

result = driver.find_element_by_css_selector("table#MainContent_Table1 > tbody > tr > td:nth-of-type(2)").text
output.write(result)

格式化文本可以通过format很好地处理:

output.write("My word sent is: {item}. "
"The word divide in silabes is: {result}\n".format(item=item, result=result))

关于python - 从网页发送和接收数据 - Selenium WebDriver API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33977762/

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