Je ne sais pas si le titre est très précis.
J'ai 5 méthodes qui webscrapent différents sites Web. Chaque fonction ressemble à ceci:Méthodes d'appel Python avec variables
def getWebsiteData1(last_article):
ty = datetime.today()
ty_str = ty.strftime('%d.%m.%Y')
url = 'http://www.website.com/news'
r = requests.get(url)
html = r.text
soup = BeautifulSoup(html, 'html.parser')
articles = soup.findAll("div", {"class": "text"})[:15]
data = list()
for article in articles:
article_data = dict()
if article.find("a").get('href') == last_article:
return data
else:
article_data["link"] = article.find("a").get('href')
article_data["title"] = article.find("a").get_text()
data.append(article_data)
return data
Ainsi, chaque fonction renvoie une liste de dictionnaires.
j'ai une autre fonction qui appelle cette fonction:
def CreateArticle(website_number, slug):
website = Website.objects.get(slug=slug)
last_article = website.last_article
data = getWebsiteData1(last_article) # here i want to do something like
data = website_number(last_article) # but ofcourse this doesnt work
if len(data) == 0:
return "No news"
else:
for i in data:
article = Article(service=service)
article.title = i['title']
article.url = i['link']
article.code = i['link']
article.save()
service.last_article = data[0]['link']
service.save(update_fields=['last_article'])
return data[0]['link']
Je veux être en mesure d'appeler Createarticle (website_number) et dire à cette fonction quelle fonction getWebsiteData
il devrait appeler, pour que je puisse avoir qu'une seule fonction CreateArticle
et non pour chaque fonction webscrapper une autre fonction CreateArticle. J'espère que ma question est claire: D