Очистить веб, пока не будет отключена следующая страница - PullRequest
1 голос
/ 12 марта 2019
url = 'https://www.tripadvisor.ie/Attraction_Review-g295424-d2038312-Reviews-Global_Village-Dubai_Emirate_of_Dubai.html'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
def get_links():
  review_links = []
  for review_link in soup.find_all('a', {'class':'title'},href=True):
      review_link = review_link['href']
      review_links.append(review_link)
  return review_links
link = 'https://www.tripadvisor.ie'
review_urls = []
for i in get_links():
   review_url = link + i
   print (review_url)
review_urls.append(review_url)

Здесь этот код для сохранения всех гиперссылок, представленных на этой веб-странице, но я хочу очистить все гиперссылки на страницах до 319. Невозможно реализовать, когда разбиение на страницы отключено

1 Ответ

0 голосов
/ 13 марта 2019

Существует параметр, который вы можете изменить в URL, чтобы зациклить и получить все отзывы. Так что я просто добавил цикл и запрашивает все URL

def get_page(index):
    url = "https://www.tripadvisor.ie/Attraction_Review-g295424-d2038312-Reviews-or{}-Global_Village-Dubai_Emirate_of_Dubai.html".format(str(index))
    html = requests.get(url)
    page = soup(html.text, 'html.parser')
    return page

nb_review = 3187
for i in range(0, nb_review, 10):
    page = get_page(i)

Полный код, использующий ваш фрагмент:

from bs4 import BeautifulSoup as soup
import requests

def get_page(index):
    url = "https://www.tripadvisor.ie/Attraction_Review-g295424-d2038312-Reviews-or{}-Global_Village-Dubai_Emirate_of_Dubai.html".format(str(index))
    html = requests.get(url)
    page = soup(html.text, 'html.parser')
    return page

def get_links(page):
  review_links = []
  for review_link in page.find_all('a', {'class':'title'},href=True):
      review_link = review_link['href']
      review_links.append(review_link)
  return review_links

link = 'https://www.tripadvisor.ie'
review_urls = []
nb_review = 3187
for i in range(0, nb_review, 10):
    page = get_page(i)
    for i in get_links(page):
        review_url = link + i
        review_urls.append(review_url)
print(len(review_urls))

ВЫВОД:

3187

EDIT:

Очевидно, что вы можете удалить первую страницу и получить номер отзыва, чтобы обновить код и сделать его более настраиваемым

...