Как очистить общее количество страниц с помощью BeautifulSoup или css reader? - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь извлечь общее количество страниц из запроса, и до сих пор я пробовал и BeautifulSoup, и css reader, но я не могу получить "3" из этого примера:

Это показывает, где информация о странице отображается в исходном коде со страницы

Как извлечь номер 3, чтобы я мог использовать его для перебора всех страниц во время сканирования?

Я ценю любая помощь, застрял на это сейчас.

Код:

import requests
import pprint
from bs4 import BeautifulSoup

url = 'https://seekingalpha.com/search?q=editas&tab=transcripts'
headers = {'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36"}
page = requests.get(url, headers=headers)

soup = BeautifulSoup(page.content, 'html.parser')
print(soup)

results = soup.findAll('div',class_="result-pages")
print(results)
  • Проблема в том, что страницы результатов находятся в исходном коде, но не отображаются в суп ...

Еще один способ сделать это будет css:

class QuotesSpider(scrapy.Spider):

    name = "quotes"
    custom_settings = {
            # 'LOG_LEVEL': 'CRITICAL', # 'DEBUG'
            'LOG_ENABLED': False,
            'DOWNLOAD_DELAY': 4 # 0.25 == 250 ms of delay, 1 == 1000ms of delay, etc.
    }

    def start_requests(self):
        # GET LAST INDEX PAGE NUMBER
        urls = [ 'https://seekingalpha.com/search?q=editas&tab=transcripts#page=' ]
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse_last_page)

    def parse_last_page(self, response):
        data = response.css("result-pages > ul.list-inline > li:last-child a::text")
        last_page = data.extract()
        last_page = int(last_page[0])
        for x in range(0, last_page+1):
            # DEBUGGING: CHECK ONLY FIRST ELEMENT
            if debug_mode == True and x > 0:
                break
            url = "https://seekingalpha.com/search?q=editas&tab=transcripts#page=%d" % (x)
            yield scrapy.Request(url=url, callback=self.parse)

Но опять же, не работает, и я не могу получить значение "3" из скрипт ...

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