从在线词典中抓取单词:while/loop 问题

Scraping words from online dictionary : while/loop issue

我在尝试从在线词典中抓取所有单词以便稍后获得它们的定义时遇到问题。我正在抓取 BeautifulSoup,我认为我的 while 和 for 循环中存在问题。

正如您在下面的代码中看到的,我的 url 中有两个变量要抓取,一个用于字母表中的字母,第二个用于页数,以便获取所有一封信中的单词。

def get_data():
    page = 1
    letters = ['A', 'B', 'C']
    all_words = []

    for letter in letters:
        while page != 100:
            url = f"https://dictionnaire.lerobert.com/explore/def/{letter}/{page}"
            soup = BeautifulSoup(requests.get(url=url).text, 'html.parser')
            data = soup.find(class_='l-l')
            for word in data.find_all('a'):
                all_words.append(word['href'])
            page = page + 1

    print(all_words)
    print(len(all_words))

使用此代码,它只考虑字母 A。所以我试着把 while 放在 for 循环之前,我确实混合了 A、B 和 C 词,但只有几十个词,所以计数根本不匹配。

你们有什么想法吗?我肯定在 while 和 for 循环操作中遗漏了一些东西,但我不知道是什么(老实说,我对编码有点陌生)

非常感谢, Btv-

您没有将 page 重置为 1。

得到字母A的单词后page的值将是100。在下一次迭代中,当字母为 B 时,page 仍为 100,因此不会执行 while 循环。

for letter in letters:
        page = 1   # Resetting the page to 1
        while page != 100:
            url = f"https://dictionnaire.lerobert.com/explore/def/{letter}/{page}"
            soup = BeautifulSoup(requests.get(url=url).text, 'html.parser')
            data = soup.find(class_='l-l')
            for word in data.find_all('a'):
                all_words.append(word['href'])
            page = page + 1