我一直在做这个项目,一个网站给了我3个用图片描绘的数字。我很快了解到开发人员忘记更改HTML源代码中PNG文件的名称,所以我学会了使用代码读取这些文件。
我已经用selenium和beatfulsoup设置了一个代码,用这个特定的网站制作一个chrome页面。给我时间登录。阅读文本代码中的HTML源代码,找到数字并将其插入指定区域,然后单击"继续"按钮。然后循环。
import time
import re
import numbers
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
driver = webdriver.Chrome(executable_path = "C:/Users/user/Desktop/Personal/PythonScripts/chromedriver.exe")
driver.get('URL I USED')
time.sleep(20)
driver.refresh()
soup = BeautifulSoup(driver.page_source ,"lxml")
all_items = soup.find_all('img')
for item in all_items:
print('char:', item['src'][-5])
LIST = [item['src'][-5] for item in all_items]
new_list = []
for value in LIST:
try:
new_list.append(int(value))
except ValueError:
continue
for i in new_list:
print(i, end="")
try :
driver.find_element_by_tag_name('input').send_keys(new_list[0],new_list[1],new_list[2])
except :
print('Fail')
html_source = driver.page_source
print(html_source)
button = driver.find_element_by_xpath('//*[@id="main"]/form/div[3]/input')
button.click()
time.sleep(5)
while True:
for item in all_items:
print('char:', item['src'][-5])
LIST = [item['src'][-5] for item in all_items]
new_list = []
for value in LIST:
try:
new_list.append(int(value))
except ValueError:
continue
for i in new_list:
print(i, end="")
try :
driver.find_element_by_tag_name('input').send_keys(new_list[0],new_list[1],new_list[2])
except :
print('Fail')
html_source = driver.page_source
print(html_source)
new_list.clear()
button.click()
time.sleep(10)
driver.refresh()
我对python和编码还很陌生,所以可以随意指出与主题无关的错误。我的问题是,在按下continue后,页面不一定会重新加载,我尝试不重新加载它,但我的代码正确地"读取"了第一次调查,但在接下来的调查中失败了,因为它用以前使用的数字填充了空白。(只有第一个(。我增加了超过必要的睡眠时间。在循环结束时删除了driver.refresh()
。它们都不起作用。
提前感谢
我建议您在发送调查后更改脚本以结束驱动程序会话。在启动驱动程序之前,只需启动while循环。
另一方面,您使用BeutifulSoup只是为了获取图像,您可以将其更改为
driver.find_elements_by_tag_name ('img')
要在所有脚本中使用selenium,find_elements_by_tag_name
将返回元素列表