3

Python Начинающий здесь. Я пытаюсь очистить все продукты от one category on dabs.com. Мне удалось очистить все продукты на заданной странице, но у меня возникли проблемы с повторением всех разбитых страниц.Скремблирование нескольких страниц с помощью BeautifulSoup и запросов

В настоящее время я попытался изолировать все кнопки разбиения на страницы с помощью класса span = 'page-list, но даже это не работает. В идеале я хотел бы, чтобы гусеничный движок продолжал нажимать дальше, пока он не будет .? Царапины все продукты на всех страницах Как я могу это сделать

Действительно оценить любой входной сигнал

from bs4 import BeautifulSoup 

import requests 

base_url = "http://www.dabs.com" 
page_array = [] 

def get_pages(): 
    html = requests.get(base_url) 
    soup = BeautifulSoup(html.content, "html.parser") 

    page_list = soup.findAll('span', class="page-list") 
    pages = page_list[0].findAll('a') 

    for page in pages: 
     page_array.append(page.get('href')) 

def scrape_page(page): 
    html = requests.get(base_url) 
    soup = BeautifulSoup(html.content, "html.parser") 
    Product_table = soup.findAll("table") 
    Products = Product_table[0].findAll("tr") 

    if len(soup.findAll('tr')) > 0: 
     Products = Products[1:] 

    for row in Products: 
     cells = row.find_all('td') 
     data = { 
      'description' : cells[0].get_text(), 
      'price' : cells[1].get_text() 
     } 
     print data 

get_pages() 
[scrape_page(base_url + page) for page in page_array] 

ответ

4

Их следующая кнопка страница имеет название «Next» вы могли бы сделать что-то вроде:

import requests 
from bs4 import BeautifulSoup as bs 

url = 'www.dabs.com/category/computing/11001/' 
base_url = 'http://www.dabs.com' 

r = requests.get(url) 

soup = bs(r.text) 
elm = soup.find('a', {'title': 'Next'}) 

next_page_link = base_url + elm['href'] 

Надеюсь, что помогает.

+0

Предлагаемое редактирование: это 'bs4 (r.text)', а не 'bs' – ShanZhengYang

Смежные вопросы