我正在做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)
答案 0 :(得分:0)
如果您要抓取从首页获得的所有链接,然后再抓取从这些链接获得的所有链接,依此类推,则需要递归函数。
以下是一些入门代码,可以帮助您入门:
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)
此递归函数的问题是,直到页面上没有链接,它才会停止,这可能不会很快发生。您将需要添加停止条件。