Как очистить сайт, используя следующую нумерацию страниц в bs4? - PullRequest
0 голосов
/ 11 июня 2018

У меня есть скрипт, который очищает конкретный веб-сайт, где номер страницы определяется с помощью ?start={}. Этот сайт .

Это мой скрипт:

from bs4 import BeautifulSoup
from urllib.request import urlopen

def parse():
    for i in range(0, 480, 5):
        html = urlopen('http://rl.odessa.ua/index.php/ru/poslednie-novosti?start={}'.format(i))
        soup = BeautifulSoup(html, 'lxml')

        for article in soup.findAll('article', class_ = 'item'):
            try:    
                print('\t' + article.find('h1').find('a').get_text())
                print(article.find('p').get_text() + '\n' + '*'*80)
            except AttributeError as e:
                print(e)

parse() 

В нижней части страницы находится div.pagination с a.next. Вот скриншот.

Это плохая практика с использованием range() вместо нумерации страниц?В любом случае, пожалуйста, помогите мне переписать код выше, используя нумерацию страниц.

1 Ответ

0 голосов
/ 15 июня 2018

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

from bs4 import BeautifulSoup
from urllib.request import urlopen

def parse():
    base_url = 'http://rl.odessa.ua/index.php'
    url = 'http://rl.odessa.ua/index.php/ru/poslednie-novosti?start=0'

    while True:
        html = urlopen(url)
        soup = BeautifulSoup(html, 'lxml')

        for article in soup.findAll('article', class_ = 'item'):
            try:    
                print('\t' + article.find('h1').find('a').get_text())
                print(article.find('p').get_text() + '\n' + '*'*80)
            except AttributeError as e:
                print(e)

        next_button = soup.find('a', class_='next', href=True)

        if next_button:
            url = base_url + next_button['href']
        else:
            break

parse() 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...