Это первый раз, когда я публикую вопрос о SO, недавно я попал в scrapy и python и у меня есть предварительно написанный сканер для сканирования Amazon для продуктов, который требует исправления.
бит кода Iздесь можно определить:
1) класс сканера
class AmazonSpider(CrawlSpider):
name = 'amazon'
allowed_domains = ['www.amazon.com']
rules = (
Rule(
LinkExtractor(allow=('/s/ref=sr_pg_'), tags=('a'),attrs=
('href'),restrict_css=('.pagnNext',)),
callback="parse_items",
follow=True,
process_request='process_request'
),
)
2) представляющие интерес элементы данных
def __init__(self, product='samsung', domain=None, *args, **kwargs):
super(AmazonSpider, self).__init__(*args, **kwargs)
self.start_urls = [a,b,c,d]
#Some more lines below
список из 4 URL, каждый изкоторый является результатом поиска на Amazon (например, один будет получен при поиске мобильных телефонов Samsung, другие будут телевизоры LG и т. д.)
3) интересующий метод
def parse_start_url(self, response):
request = Request("https://www.amazon.com/s/?field-keywords=",
callback=self.parse_items)
return request
4) метод обратного вызова в каждом правиле parse_items работает с извлеченными ссылками, чтобы получить интересующие данные
Насколько я понимаю, каждый URL из списка start_urls анализируется parse_start_url() метод:
Я не могу понять: 1) как работают «правила» 2) как работает «linkextractor» внутри
Мне нужно, чтобы все 4 URL были там.ссылки извлечены со всех страниц, а затем все эти ссылки могут быть использованы для полученияинформация о продукте.Если это хорошо?Могу ли я также узнать пример, в котором мы можем определить приоритеты для start_urls?
** 4 конкретных URL-адреса результатов поиска используются в списке start_urls, поскольку при использовании общего результата поиска было предоставлено только 20 страниц.
Еслилюбой может обернуть голову вокруг моего запроса, пожалуйста, помогите.Большое спасибо, также, если вам интересно прочитать это и вам нужна дополнительная информация для решения моей проблемы, пожалуйста, спросите.
Спасибо всем !!