В идеале, чтобы повысить производительность и сократить код еще дальше от многократного зацикливания, вы можете проанализировать результаты своих веб-страниц и нормализовать их, заменив все специальные символы эквивалентами ASCII ( Замена специальных символов эквивалентами ASCII ) .
Вы можете избежать повторения, изменив свой код так, чтобы он зацикливался на Gdansk
вариациях, а затем объединял результаты в один набор. Я изменил ваш код ниже и разделил его на несколько функций.
import requests
from bs4 import BeautifulSoup as bs
from datetime import datetime
def extract_links(content):
# Return a list of hrefs that mention any variation of the city Gdansk
variations = ['Gdansk', 'gdansk', 'Gdańsk', 'gdańsk']
result = []
for x in variations:
result = [*result, *[item['href'] for item in content.select(f"[href*={x}]")]]
return result
def data(timedateformat='complete'):
formatdaty = timedateformat.lower()
if timedateformat == 'rokmscdz':
return (str(datetime.now())).split(' ')[0]
elif timedateformat == 'dzmscrok':
return ((str(datetime.now())).split(' ')[0]).split('-')[2] + '-' + ((str(datetime.now())).split(' ')[0]).split('-')[1] + '-' + ((str(datetime.now())).split(' ')[0]).split('-')[0]
def get_links_from_urls(*urls):
# Request webpages then loop over the results to
# create a set of links that we will write to our file.
result = []
for rv in [requests.get(url) for url in urls]:
zupa = bs(rv.content, 'lxml')
result = [*result, *extract_links(zupa)]
return set(result)
def main():
# use pytons context manager to open 'ass.csv' and write out csv rows
plik = "dupa.csv"
with open(plik, 'a') as f:
for item in get_links_from_urls('http://www.dziennikbaltycki.pl', 'http://www.trojmiasto.pl'):
print('Data wpisu: ' + data('dzmscrok'))
print('Link: ' + item)
print('\n')
f.write(f'Data wpisu: {data("dzmscrok")},{item}\n')
main()
Надеюсь, это поможет, дайте мне знать, если у вас есть какие-либо проблемы в комментариях.