Mam URL w postaci:scrapy - analizowania elementów, które są paginowane
example.com/foo/bar/page_1.html
Istnieje w sumie 53 stron, każda z nich ma ~ 20 wierszy.
Zasadniczo chcę uzyskać wszystkie wiersze ze wszystkich stron, tj. ~ 53 * 20 pozycji.
Mam kod działa w moim metody parse, że analizuje jedną stronę, a także przechodzi jedna strona głębiej za sztukę, aby uzyskać więcej informacji na temat urządzenia:
def parse(self, response):
hxs = HtmlXPathSelector(response)
restaurants = hxs.select('//*[@id="contenido-resbus"]/table/tr[position()>1]')
for rest in restaurants:
item = DegustaItem()
item['name'] = rest.select('td[2]/a/b/text()').extract()[0]
# some items don't have category associated with them
try:
item['category'] = rest.select('td[3]/a/text()').extract()[0]
except:
item['category'] = ''
item['urbanization'] = rest.select('td[4]/a/text()').extract()[0]
# get profile url
rel_url = rest.select('td[2]/a/@href').extract()[0]
# join with base url since profile url is relative
base_url = get_base_url(response)
follow = urljoin_rfc(base_url,rel_url)
request = Request(follow, callback = parse_profile)
request.meta['item'] = item
return request
def parse_profile(self, response):
item = response.meta['item']
# item['address'] = figure out xpath
return item
Pytanie brzmi, jak mogę przeszukiwać każdą stronę?
example.com/foo/bar/page_1.html
example.com/foo/bar/page_2.html
example.com/foo/bar/page_3.html
...
...
...
example.com/foo/bar/page_53.html
pomysł start_urls jest świetny. wielkie dzięki – AlexBrand
Doskonała odpowiedź. Dziękuję za to. LinkExtractor na stronie scrapy nie działa dla mnie. Tak było. –
jak sprawdzić, czy strona nie została znaleziona. ma tylko 53 strony. ale jeśli nazywam 'xrange (1,60)'. – user1586957