Я сделал фрагмент кода, который отлично работает с печатью, но не работает, когда я сделал его функцию и попытался вернуть его. Вот исходный код:Функция не будет петля
import requests
from bs4 import BeautifulSoup
import wikipedia
source_code = requests.get('http://en.wikipedia.org/wiki/IBM')
plain_text = source_code.text
plain_text = plain_text[:plain_text.find('id="toc"')]
soup = BeautifulSoup(plain_text)
for div in soup.findAll('a'):
if div.parent.name == 'p':
href = div.get('href')
href = href.replace(',', '')
href = href.replace('-', ' ')
href = href.replace('(', '')
href = href.replace(')', '')
href = href.replace('_', ' ')
print (href[6:])
href = href.replace(' ', '_')
href = href.replace('^', '')
try:
print(wikipedia.summary(href[6:]))
except wikipedia.exceptions.DisambiguationError as e:
print (e.options)
, который форматирует текст и дает мне название и резюме страницы википедии и все резюме ссылки в исходном резюме, что именно то, что я хочу. К сожалению, это должно быть частью более крупной программы, и поэтому я сделал функцию (возможно, я должен делать это по-другому?) это выглядит следующим образом:
import requests
from bs4 import BeautifulSoup
import wikipedia
source_code = requests.get('http://en.wikipedia.org/wiki/IBM')
plain_text = source_code.text
plain_text = plain_text[:plain_text.find('id="toc"')]
soup = BeautifulSoup(plain_text)
def ELS():
for div in soup.findAll('a'):
if div.parent.name == 'p':
href = div.get('href')
href = href.replace(',', '')
href = href.replace('-', ' ')
href = href.replace('(', '')
href = href.replace(')', '')
href = href.replace('_', ' ')
return href[6:]
href = href.replace(' ', '_')
href = href.replace('^', '')
try:
return wikipedia.summary(href[6:])
except wikipedia.exceptions.DisambiguationError as e:
return e.options
print (ELS())
, но по какой-то причине, он не цикл и просто печатает первый заголовок, а затем ломается, может быть, это легкая проблема, и только что-то я пропустил
При использовании 'return', функция возвращает немедленно, поэтому цикл заканчивается. – Barmar
Не возвращайтесь внутри цикла, объедините значение в строку результата. Верните эту строку после завершения цикла. – Barmar
Okey, подумал, что это может быть что-то вроде этого, спасибо :) –