我的Python输出会重复数百次

2024-06-08 16:27:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习从网站上搜集数据。使用jupyter笔记本打印代码时出现问题。我的输出重复了很多次,我不知道如何修复它。这是我的试用码:

from bs4 import BeautifulSoup
from bs4.element import Comment
import urllib
from urllib.request import urlopen
import re


url = ('https://jogjapolitan.harianjogja.com/read/2020/10/06/510/1051831/omnibus-law-cipta-kerja-disahkan-buruh-di-jogja-berkabung')
html = urlopen(url).read()

soup = BeautifulSoup(html, 'html.parser')
results = soup.find('div', class_="entry_content")
datas = (''.join(results.stripped_strings))
for data in datas:
    match = re.findall('(?:"(.*?)")', datas)
    if match:
        print(match[1])

在我把它打印出来之前,我认为它很好:

Aksi tersebut akan berlangsung mulai hari ini hingga puncaknya pada tanggal 8 Oktober di Tugu Pal Putih Jogja. Kemudian, langkah yang dilakukan kita akan ada aksi unjuk rasa besar-besaran serentak di seluruh kota di Indonesia tanggal 8 Oktober. Kita juga akan menggalang kekuatan dengan elemen-elemen masyarakat dan akan buat aksi simultan mulai 6 sampai 8 Oktober,
Aksi tersebut akan berlangsung mulai hari ini hingga puncaknya pada tanggal 8 Oktober di Tugu Pal Putih Jogja. Kemudian, langkah yang dilakukan kita akan ada aksi unjuk rasa besar-besaran serentak di seluruh kota di Indonesia tanggal 8 Oktober. Kita juga akan menggalang kekuatan dengan elemen-elemen masyarakat dan akan buat aksi simultan mulai 6 sampai 8 Oktober,
Aksi tersebut akan berlangsung mulai hari ini hingga puncaknya pada tanggal 8 Oktober di Tugu Pal Putih Jogja. Kemudian, langkah yang dilakukan kita akan ada aksi unjuk rasa besar-besaran serentak di seluruh kota di Indonesia tanggal 8 Oktober. Kita juga akan menggalang kekuatan dengan elemen-elemen masyarakat dan akan buat aksi simultan mulai 6 sampai 8 Oktober,
Aksi tersebut akan berlangsung mulai hari ini hingga puncaknya pada tanggal 8 Oktober di Tugu Pal Putih Jogja. Kemudian, langkah yang dilakukan kita akan ada aksi unjuk rasa besar-besaran serentak di seluruh kota di Indonesia tanggal 8 Oktober. Kita juga akan menggalang kekuatan dengan elemen-elemen masyarakat dan akan buat aksi simultan mulai 6 sampai 8 Oktober,
Aksi tersebut akan berlangsung mulai hari ini hingga puncaknya pada tanggal 8 Oktober di Tugu Pal Putih Jogja. Kemudian, langkah yang dilakukan kita akan ada aksi unjuk rasa besar-besaran serentak di seluruh kota di Indonesia tanggal 8 Oktober. Kita juga akan menggalang kekuatan dengan elemen-elemen masyarakat dan akan buat aksi simultan mulai 6 sampai 8 Oktober,
Aksi tersebut akan berlangsung mulai hari ini hingga puncaknya pada tanggal 8 Oktober di Tugu Pal Putih Jogja. Kemudian, langkah yang dilakukan kita akan ada aksi unjuk rasa besar-besaran serentak di seluruh kota di Indonesia tanggal 8 Oktober. Kita juga akan menggalang kekuatan dengan elemen-elemen masyarakat dan akan buat aksi simultan mulai 6 sampai 8 Oktober,
Aksi tersebut akan berlangsung mulai hari ini hingga puncaknya pada tanggal 8 Oktober di Tugu Pal Putih Jogja. Kemudian, langkah yang dilakukan kita akan ada aksi unjuk rasa besar-besaran serentak di seluruh kota di Indonesia tanggal 8 Oktober. Kita juga akan menggalang kekuatan dengan elemen-elemen masyarakat dan akan buat aksi simultan mulai 6 sampai 8 Oktober,
Aksi tersebut akan berlangsung mulai hari ini hingga puncaknya pada tanggal 8 Oktober di Tugu Pal Putih Jogja. Kemudian, langkah yang dilakukan kita akan ada aksi unjuk rasa besar-besaran serentak di seluruh kota di Indonesia tanggal 8 Oktober. Kita juga akan menggalang kekuatan dengan elemen-elemen masyarakat dan akan buat aksi simultan mulai 6 sampai 8 Oktober,
Aksi tersebut akan berlangsung mulai hari ini hingga puncaknya pada tanggal 8 Oktober di Tugu Pal Putih Jogja. Kemudian, langkah yang dilakukan kita akan ada aksi unjuk rasa besar-besaran serentak di seluruh kota di Indonesia tanggal 8 Oktober. Kita juga akan menggalang kekuatan dengan elemen-elemen masyarakat dan akan buat aksi simultan mulai 6 sampai 8 Oktober,
Aksi tersebut akan berlangsung mulai hari ini hingga puncaknya pada tanggal 8 Oktober di Tugu Pal Putih Jogja. Kemudian, langkah yang dilakukan kita akan ada aksi unjuk rasa besar-besaran serentak di seluruh kota di Indonesia tanggal 8 Oktober. Kita juga akan menggalang kekuatan dengan elemen-elemen masyarakat dan akan buat aksi simultan mulai 6 sampai 8 Oktober,
Aksi tersebut akan berlangsung mulai hari ini hingga puncaknya pada tanggal 8 Oktober di Tugu Pal Putih Jogja. Kemudian, langkah yang dilakukan kita akan ada aksi unjuk rasa besar-besaran serentak di seluruh kota di Indonesia tanggal 8 Oktober. Kita juga akan menggalang kekuatan dengan elemen-elemen masyarakat dan akan buat aksi simultan mulai 6 sampai 8 Oktober,
Aksi tersebut akan berlangsung mulai hari ini hingga puncaknya pada tanggal 8 Oktober di Tugu Pal Putih Jogja. Kemudian, langkah yang dilakukan kita akan ada aksi unjuk rasa besar-besaran serentak di seluruh kota di Indonesia tanggal 8 Oktober. Kita juga akan menggalang kekuatan dengan elemen-elemen masyarakat dan akan buat aksi simultan mulai 6 sampai 8 Oktober,
Aksi tersebut akan berlangsung mulai hari ini hingga puncaknya pada tanggal 8 Oktober di Tugu Pal Putih Jogja. Kemudian, langkah yang dilakukan kita akan ada aksi unjuk rasa besar-besaran serentak di seluruh kota di Indonesia tanggal 8 Oktober. Kita juga akan menggalang kekuatan dengan elemen-elemen masyarakat dan akan buat aksi simultan mulai 6 sampai 8 Oktober,
Aksi tersebut akan berlangsung mulai hari ini hingga puncaknya pada tanggal 8 Oktober di Tugu Pal Putih Jogja. Kemudian, langkah yang dilakukan kita akan ada aksi unjuk rasa besar-besaran serentak di seluruh kota di Indonesia tanggal 8 Oktober. Kita juga akan menggalang kekuatan dengan elemen-elemen masyarakat dan akan buat aksi simultan mulai 6 sampai 8 Oktober,

还有成百上千

非常感谢所有的答案。谢谢


Tags: iniditanggalharipadaelemenoktobermulai
2条回答
for data in datas:
    match = re.findall('(?:"(.*?)")', **datas**)
    if match:
        print(match[1])

在for循环中,您使用了数据而不是数据。它使用数据来查找正则表达式模式,而不是数据

for data in datas循环导致了您的问题<强>您的正则表达式没有问题,因为一些答案已经建议让我们看看代码的执行。

我已经更正了文章底部的代码,但首先我想和你谈谈这个问题

当您创建变量data时,您将多个内容连接到一个字符串中。作为演示,您应该运行print(type(datas))。这意味着,您的数据已经放在一起了

当您在字符串中循环时,实际上最终会循环该字符串的每个字母。作为测试,请尝试运行以下命令:

for data in datas:
    print(data)

程序将在新行上输出每个字母,如下所示:

H
a
r
i
a
...

解决方案 您所需要做的就是删除for循环,一切都会正常工作。以下是最终代码的外观:

#Imports 


url = ('https://jogjapolitan.harianjogja.com/read/2020/10/06/510/1051831/omnibus-law-cipta-kerja-disahkan-buruh-di-jogja-berkabung')
html = urlopen(url).read()

soup = BeautifulSoup(html, 'html.parser')
results = soup.find('div', class_="entry_content")
datas = (''.join(results.stripped_strings))
#for data in datas:
match = re.findall('(?:"(.*?)")', datas)
if match:
    print(match[1])

这将为您提供以下结果:

Aksi tersebut akan berlangsung mulai hari ini hingga puncaknya pada tanggal 8 Oktober di Tugu Pal Putih Jogja. Kemudian, langkah yang dilakukan kita akan ada aksi unjuk rasa besar-besaran serentak di seluruh kota di Indonesia tanggal 8 Oktober. Kita juga akan menggalang kekuatan dengan elemen-elemen masyarakat dan akan buat aksi simultan mulai 6 sampai 8 Oktober,

相关问题 更多 >