J'utilise BeautifulSoup pour récupérer des informations sur un site Web. J'ai utilisé une boucle for pour obtenir tous les éléments de ce site Web qui remplissent un critère.
Cependant, lorsque j'appelle la fonction en dehors de la boucle for, je n'obtiens que le dernier élément récupéré par la boucle for.
Je sais que je peux créer une liste vide en dehors de la boucle et ajouter tous les éléments. Le problème avec ceci est que j'insère ces informations dans MySQL en utilisant PyMySQL et MySQL ne prend pas dans une liste.
Je sais que je peux également transformer une liste en une chaîne en utilisant " ".join(list) Le problème avec ceci est que MySQL prend ce nouvel objet et l'envoie à une seule cellule de la base de données.
def getRestaurantLink(bs):
listLinks = []
restGrid = bs.find_all ("ul", {"class": "lemon--ul__373c0__1_cxs
undefined list__373c0__2G8oH"})
for i in restGrid:
link = i.find_all("a", {"href": re.compile ("/biz/.*")})
for l in link:
if "target" in l.attrs and "name" in l.attrs and "rel" in
l.attrs:
listLinks.append (l.attrs["href"])
for link in listLinks[0::3]:
links = ("https://www.yelp.com"+str(link))
print (links)
html_page = requests.get("https://www.yelp.com/search?
cflt=restaurants&find_loc=Hunts+Point%2C+Bronx%2C+NY+10474")
bs = BeautifulSoup (html_page.text, "html.parser")
getRestaurantLink(bs)
Je ne connais pas le bit de chargement, mais cela vous renverra le nombre correct de liens sous forme de liste que vous pourrez ensuite boucler.
import requests
from bs4 import BeautifulSoup as bs
def get_restaurant_links(url):
base = 'https://www.yelp.com'
r = requests.get(url)
soup = bs(r.content, 'lxml')
links = [base + i['href'] for i in soup.select('h3 [href^="/biz"]')]
return links
some_list = get_restaurant_links('https://www.yelp.com/search?%20cflt=restaurants&find_loc=Hunts+Point%2C+Bronx%2C+NY+10474')
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots