Я пытаюсь извлечь общее количество страниц из запроса, и до сих пор я пробовал и 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" из скрипт ...