@Katy93

Как передать параметры страницы если они записаны в url-адрес?

Делала парсер для Avito по одному видеоуроку, там автор передает параметры страницы способом GET, т.е. все что находится за знаком “?”. Но я решила использовать другой сайт, там все параметры находятся внутри url, т.е. get параметров нет.

Вот как выглядит строка:
flashhome.ru/genre_arcade_2_20_bydate.html
2 – это страница (постраничной навигации)
20 – это количество записей на странице.
Как переписать код чтобы можно было выводить записи но при этом используя классы и сессии? Вот код:

print('Content-Type: text/html; charset=utf-8\n')

import requests

from bs4 import BeautifulSoup 
#from collections import namedtuple


#InnerBlock = namedtuple('Block','title,price,currency,date,url')

class AvitoParser:
  def __init__(self):
    self.session = requests.Session()
    #Чтобы Avito не думал что мы его ломаем, а думал что мы просто браузер
    self.session.headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
    'Accept-Language': 'ru',
    }
    
    
  def get_page(self, page: int = None):
    # params = {
     #  'radius': 0,
      # 'user': 1,
    # }
    # if page and page > 1:
     #   params['p'] = page
        
        #cd=1&localPriority=0&
     #url = 'https://www.avito.ru/moskva/avtomobili/bmw-ASgBAgICAUTgtg3klyg'
     url = 'http://flashhome.ru/genre_arcade_'+ page +'_20_bydate.html'
     r = self.session.get(url, params=params)
     return r.text
  def get_blocks(self):
     text = self.get_page(page=2)
     print(text)
     return
     # soup = bs4.BeautifulSoup(text,'lxml')
      
      # Запрос CSS-селектора, состоящего из множества классов, производится через select
     # container = soup.select('div.item.item_table.clearfix.js-catalog-item-enum.item-with-contact.js-item-extended')
      
     # for item in container:
     #   block = self.parse_block(item=item)
      #  print(block)

def main():
   p = AvitoParser()
   p.get_blocks()
   
if __name__ == '__main__':
   main()
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ответы на вопрос 2
gedeys
@gedeys
Не совсем понятен вопрос... если просто пагинацию, то, получить количество страниц и обойти их в цикле...
Ответ написан
Комментировать
@Katy93 Автор вопроса
А код можно узнать как будет выглядеть парсер с постраничной навигацией.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы