Я пытаюсь разобрать домен, содержимое которого выглядит следующим образом
Страница 1 - содержит ссылки на 10 статей
Страница 2 - содержит ссылки на 10 статей
Страница 3 - содержит ссылки на 10 статей
и так далее ...
Моя работа заключается в том, чтобы разобрать все статьи на всех страницах.
Моя мысль - Разобрать все страницы и сохранить ссылки на все статьи в списке, а затем повторить список и разобрать ссылки.
До сих пор мне удавалось перебирать страницы, анализировать и собирать ссылки на статьи. Я застрял на том, как начать анализ этого списка.
Мой код до сих пор ...
import scrapy
class DhoniSpider(scrapy.Spider):
name = "test"
start_urls = [
"https://www.news18.com/cricketnext/newstopics/ms-dhoni.html"
]
count = 0
def __init__(self, *a, **kw):
super(DhoniSpider, self).__init__(*a, **kw)
self.headers= {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0'}
self.seed_urls = []
def start_requests(self):
for url in self.start_urls:
yield scrapy.Request(url, headers=self.headers, callback=self.parse)
def parse(self, response):
DhoniSpider.count += 1
if DhoniSpider.count > 2 :
# there are many pages, this is just to stop parsing after 2 pages
return
for ul in response.css('div.t_newswrap'):
ref_links = ul.css('div.t_videos_box a.t_videosimg::attr(href)').getall()
self.seed_urls.extend(ref_links)
next_page = response.css('ul.pagination li a.nxt::attr(href)').get()
if next_page is not None:
next_page = response.urljoin(next_page)
yield scrapy.Request(next_page, headers=self.headers, callback=self.parse)
def iterate_urls(self):
for link in self.seed_urls:
link = response.urljoin(link)
yield scrapy.Request(link, headers=self.headers, callback=self.parse_page)
def parse_page(self, response):
print("called")
как перебрать мой список self.seed_urls
и проанализировать их? Откуда мне вызывать мою iterate_urls
функцию?