如何在selenium python中从同一个类中获取不同的数据?

如何在selenium python中从同一个类中获取不同的数据?,python,selenium,xpath,web-scraping,Python,Selenium,Xpath,Web Scraping,我在stackoverflow中搜索过,但没有找到任何答案 我已经用python编写了一个脚本来从这个网站获取数据 该页面有两个三句结构和4-5个示例。 例如:- 结构1 -例1 -例2 结构2 -例1 -例2 结构3 -例1 -例2 -例3 我设法得到了所有的句子结构和例句,但是我怎样才能分别得到结构1、结构2和结构3的例句呢。 还有如何避免错误的句子 from selenium import webdriver import time driver = webdriver.Chrome(

我在stackoverflow中搜索过,但没有找到任何答案

我已经用python编写了一个脚本来从这个网站获取数据

该页面有两个三句结构和4-5个示例。 例如:-

结构1
-例1
-例2

结构2
-例1
-例2

结构3
-例1
-例2
-例3

我设法得到了所有的句子结构和例句,但是我怎样才能分别得到结构1、结构2和结构3的例句呢。 还有如何避免错误的句子

from selenium import webdriver
import time

driver = webdriver.Chrome(r"C:\Users\<user>\Documents\chromedriver\chromedriver.exe") # change it

save_file = open("export.txt", "w", encoding="utf8")
wrong_link_file = open("link_with_wrong.txt", "w", encoding="utf8")

url = "https://resources.allsetlearning.com/chinese/grammar/Reduplication_of_adjectives"

time.sleep(1)

driver.get(url)

time.sleep(3)

#jiegou = driver.find_element_by_xpath("/html/body/section/div[3]/div[4]/div[2]/div/div/div[2]/h1")

jiegou = driver.find_elements_by_class_name("jiegou")

usedfor = driver.find_element_by_xpath("//*[@id='ibox']/ul/li[6]/div[2]")

heading = driver.find_element_by_xpath("//*[@id='innerbodycontent']/div/div[2]/h1")

sen = driver.find_elements_by_class_name("spaced")

wrong = driver.find_elements_by_class_name("x")


# if page contain wrong sentence 
found = False
if len(wrong) > 0:
        found = True
        print("..............Found..............." + url)


for j in jiegou:
        jiegou_str = ":: " + j.text + " ::"
        print(jiegou_str)
        save_file.write(jiegou_str)
        print("\n.........................................................\n")

        save_file.write("\n\n")

st_sen=""
for s in sen:
        st_sen = str(s.text)
        if len(wrong) > 0 and wrong[0].text in st_sen:
                continue

        if "。" in st_sen :
                sep = "。"
                st_sen = st_sen.split(sep,1)[0].strip()
                st_sen += " " + sep
        if "?" in st_sen:
                sep = "?"
                st_sen = st_sen.split(sep,1)[0].strip()
                st_sen  += " " + sep

        all_set = st_sen +"\t"+ jiegou_str +"\t"+ usedfor.text +"\t"+ heading.text + "\t" + url

        print(all_set)
        save_file.write(all_set)
print("\n\n")
save_file.write("\n\n")

从selenium导入webdriver
导入时间
driver=webdriver.Chrome(r“C:\Users\\Documents\chromedriver\chromedriver.exe”)#更改它
保存文件=打开(“export.txt”,“w”,encoding=“utf8”)
错误链接文件=打开(“使用错误的.txt”“w”“encoding=“utf8”链接)
url=”https://resources.allsetlearning.com/chinese/grammar/Reduplication_of_adjectives"
时间。睡眠(1)
获取驱动程序(url)
时间。睡眠(3)
#jiegou=driver。通过xpath(“html/body/section/div[3]/div[4]/div[2]/div/div/div[2]/h1”)查找元素
jiegou=驱动程序。通过类名称(“jiegou”)查找元素
usedfor=driver。通过xpath(“/*[@id='ibox']/ul/li[6]/div[2]”查找元素
heading=driver。通过xpath(“/*[@id='innerbodycontent']/div/div[2]/h1”)查找元素
sen=驱动程序。通过类名称(“间隔”)查找元素
错误=驱动程序。通过类名称(“x”)查找元素
#如果页面包含错误的句子
发现=错误
如果len(错误)>0:
找到=真
打印(“……找到…………”+url)
对于街沟的j:
解构str=“::”+j.text+”:“
印刷品(街沟街)
保存文件。写入(结沟街)
打印(“\n………\n”)
保存文件。写入(“\n\n”)
圣森=“”
对于sen中的s:
st_sen=str(s.text)
如果len(错误)>0且错误[0]。圣森文本:
持续
如果圣森的“.”
sep=“”
st_sen=st_sen.split(9月1日)[0].strip()
圣森+9月
如果圣森州出现“?”:
sep=“?”
st_sen=st_sen.split(9月1日)[0].strip()
圣森+9月
all_set=st_sen+“\t”+jiegou\u str+“\t”+用于.text+“\t”+heading.text+“\t”+url
打印(全套)
保存文件。写入(所有集合)
打印(“\n\n”)
保存文件。写入(“\n\n”)

获取序列中的结构和示例。 导入
WebDriverWait
(),等待位于
()的所有元素的
可见性,并遵循
xpath
选项

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver

url = "https://resources.allsetlearning.com/chinese/grammar/Reduplication_of_adjectives"
driver = webdriver.Chrome(r"C:\Users\<user>\Documents\chromedriver\chromedriver.exe")
driver.get(url)
structureelements=WebDriverWait(driver,15).until(EC.visibility_of_all_elements_located((By.XPATH,"//h3[./span[text()='Structure']]/following::div[1]")))

for structure in structureelements:
    print("============================")
    print(structure.text)
    print("========================================")

    for example in structure.find_elements_by_xpath(".//following::h3[1]/following::div[1]//li[@class='spaced']"):
        print(example.text)

下面的::div[1]
,是否缺少2个div?4个结构而不是6个,因为第一个和最后一个语法点有2个结构。也许一个单行XPath就足以解决这个问题:
//div[@class='jiegou']/p[1]|//li[@class=“spaced”]
。是的,我试过了。如果存在两个结构,则会遗漏一个结构。可能的解决办法是什么?
============================
Adj. + Adj. + 的 (+ Noun)
========================================
你 的 脸 红 红 的 。
Nǐ de liǎn hóng hóng de.
Your face is red.
宝宝 的 眼睛 大 大 的 。
Bǎobao de yǎnjīng dà dà de.
The baby's eyes are big.
今晚 的 月亮 圆 圆 的 。
Jīnwǎn de yuèliàng yuán yuán de.
The moon is round tonight.
她 爸爸 高 高 胖 胖 的 。
Tā bàba gāo gāo pàng pàng de.
Her father is tall and fat.
我 妹妹 瘦 瘦 小 小 的 。
Wǒ mèimei shòu shòu xiǎo xiǎo de.
My little sister is thin and small.
============================
A A B B + 的 (+ Noun)
========================================
高兴 → 高高兴兴
gāoxìng → gāogāo-xìngxìng
happy
热闹 → 热热闹闹
rènao → rèrè-nāonāo
noisy, boisterous
漂亮 → 漂漂亮亮
piàoliang → piàopiào-liāngliāng
pretty
舒服 → 舒舒服服
shūfu → shūshū-fūfū
comfortable
安静 → 安安静静
ānjìng → ānān-jìngjìng
quiet and still
============================
AABB + 地 + Verb
========================================
我们 清清楚楚 地 看到 他 跟 一 个 胖 胖 的 男人 上 车 了 。
Wǒmen qīngqīng-chǔchǔ de kàndào tā gēn yīgè pàng pàng de nánrén shàngchē le.
We clearly saw him get in the car with a fat man.
我 真 想 舒舒服服 地 躺 在 沙发 上 看 电视 。
Wǒ zhēn xiǎng shūshū-fūfū de tǎng zài shāfā shàng kàn diànshì.
I'd really like to comfortably lie on the couch and watch TV.
你 妈妈 辛辛苦苦 地 做 了 两 个 小时 的 饭,你 怎么 不 吃 ?
Nǐ māma xīnxīn-kǔkǔ de zuò le liǎng gè xiǎoshí de fàn, nǐ zěnme bù chī?
Your mother labored over this meal for two hours, and you aren't going to eat it?
============================
Subj. + ABAB
========================================
妹妹 快 过 生日 了 ,我 打算 给 她 办 一 个 生日 派对 ,热闹 热闹 。
Mèimei kuài guò shēngrì le, wǒ dǎsuàn gěi tā bàn yī gè shēngrì pàiduì, rènao rènao.
My little sister's birthday is coming and I plan to throw her a birthday party and have a blast.
来 ,喝 点 酒 ,高兴 高兴 。
Lái, hē diǎn jiǔ, gāoxìng gāoxìng.
Come on, have a little wine and enjoy yourself.
到 这里 来 凉快 凉快 。
Dào zhèlǐ lái liángkuai liángkuai.
Come over here and cool off.
我 想 去 外面 走走 ,安静 一下 。
Wǒ xiǎng qù wàimiàn zǒuzou, ānjìng yīxià.
I'd like to take a walk outside, get some quiet time.
想 不 想 去 做 个 按摩 ,放松 一下 。
Xiǎng bu xiǎng qù zuò gè ànmó, fàngsōng yīxià.
Would you like to go get a massage and unwind?