我正在尝试循环这个网站上的每一个报价:
https://www.tui.pl/wypoczynek/wyniki-wyszukiwania-samolot?pm_source=SG&pm_name=LSC&q=:price:byPlane:T:a:WAW:dF:6:dT:8:startDate:15.09.2018:endDate:30.09.2018:ctAdult:2:ctChild:0:tripType:WS&fullPrice=false
代码:
def start_requests(self):
yield SplashRequest(
url = 'https://www.tui.pl/wypoczynek/wyniki-wyszukiwania-samolot?pm_source=SG&pm_name=LSC&q=:price:byPlane:T:a:WAW:dF:6:dT:8:startDate:15.09.2018:endDate:30.09.2018:ctAdult:2:ctChild:0:amountRange:defaultAmountRange:minHotelCategory:defaultHotelCategory:tripAdvisorRating:defaultTripAdvisorRating:beach_distance:defaultBeachDistance:tripType:WS&fullPrice=false&page=0',
args={'wait': 5.0}
)
def parse(self, response):
for item in response.css('div#offerPage'):
print(item.css('div#offerPage h3 a ::text').extract())
输出:
['TUI MAGIC LIFE Waterworld', 'Riu Bambu', 'Ivana Palace', 'Kos Bay', 'Tia Maria', 'Rezydencja Villa List', 'Esperanto', 'Jupiter', 'Vezhen', 'Obzor Beach Resort', 'Palma', 'Victoria Palace', 'Chaika Beach', 'Fenix Beach', 'Globus', 'Erma', 'Sunset Resort', 'Palace', 'Trakia Garden', 'Perla Sun', 'Lilia', 'Poseidon', 'Garden of Eden', 'Park Hotel Continental', 'Hotel Karolina', 'Santa Marina Holiday Village', 'Semeli Hotel', 'Delfin', 'Lion Sunny Beach', 'Selena Beach', 'Mercury']
看起来我的输出在一个列表中。如何更改每个#offerPage
的循环
发布于 2018-08-23 03:10:45
Scrapy selector docs。您使用的是css,所以我们将继续使用它。
因为只有一个#offerPage
(id是唯一的),所以reponse.css()
选择会产生一个元素列表。因此,parse()
中的for
循环只执行一次,但其中的选择器将生成一个包含许多元素的列表,因为在您的第一个选择中有许多h3 > a
元素。
您应该深入到多一个级别的元素,以便response.css()
为您的parse()
循环生成多个元素。然后遍历。
def parse(self, response):
# get list
list = response.css('div#offerPage h3')
#iterate over list
for item in list:
print(item.css('a::text').extract())
https://stackoverflow.com/questions/51973028
复制相似问题