Очистка ссылок и очистка этих ссылок - PullRequest
0 голосов
/ 28 сентября 2019

Я делаю очистку Python и пытаюсь получить все ссылки между тегами href, а затем обращаюсь к нему один за другим, чтобы очистить данные из этих ссылок.Я новичок и не могу понять, как продолжить это. Код выглядит следующим образом:

 import requests
    import urllib.request
    import re
    from bs4 import BeautifulSoup
    import csv

    url = 'https://menupages.com/restaurants/ny-new-york'
    url1 = 'https://menupages.com'
    response = requests.get(url)
    f = csv.writer(open('Restuarants_details.csv', 'w'))

    soup = BeautifulSoup(response.text, "html.parser")

    menu_sections=[]
    for url2 in soup.find_all('h3',class_='restaurant__title'):
    completeurl = url1+url2.a.get('href')
    print(completeurl)

    #print(url)

1 Ответ

0 голосов
/ 28 сентября 2019

Если вы хотите очистить все ссылки, полученные с первой страницы, а затем очистить все ссылки, полученные по этим ссылкам и т. Д., Вам нужна рекурсивная функция.

Вот некоторый исходный код, который поможет вамначалось:

if __name__ == "__main__":
    initial_url = "https://menupages.com/restaurants/ny-new-york"
    scrape(initial_url)

def scrape(url):
    print("now looking at " + url)
    # scrape URL
    # do something with the data

    if (STOP_CONDITION):  # update this!
        return

    # scrape new URLs:
    for new_url in soup.find_all(...):
        scrape(new_url, file)

Проблема с этой рекурсивной функцией заключается в том, что она не остановится, пока на страницах не будет ссылок, что, вероятно, не произойдет в ближайшее время.Вам нужно будет добавить условие остановки.

...