Если вы хотите запустить его только один раз и знаете общее количество страниц, все, что вам нужно сделать, - это изменить URL-адрес, который вы вызываете, и затем объединить полученные кадры данных.
Один из способов сделать это (при условии, что у вас есть python 3.6 или новее для f-строк):
df = None
for i in range(1, 44):
req = requests.get(f"https://www.trustpilot.com/review/birchbox.com?page={i}")
content = req.content
soup = BeautifulSoup(content, "lxml")
names = soup.find_all('div', attrs={'class': 'consumer-information__name'})
headers = soup.find_all('h2', attrs={'class':'review-content__title'})
bodies = soup.find_all('p', attrs={'class':'review-content__text'})
ratings = soup.find_all('div', attrs={'class':'star-rating star-rating--medium'})
dates = soup.find_all('div', attrs={'class':'review-content-header__dates'})
print ('pass1')
if df is None:
df = pd.DataFrame({'User Name':names,'Header':headers,'Body':bodies,'Rating':ratings,'Date':dates})
else:
df = pd.concat([df, pd.DataFrame({'User Name':names,'Header':headers,'Body':bodies,'Rating':ratings,'Date':dates})])
, если вы используете более старую версию python, вы можете заменить эту строку на req = requests.get("https://www.trustpilot.com/review/birchbox.com?page={}".format(i))