我有下面的蜘蛛,它是简单的只是试图解析产品标题,网址和价格从单一类别的网页。但问题是蜘蛛只得到第一个结果,从网页,这是它。我不明白它可以任何人解释这种行为。
网址:website to scrape
蜘蛛:
import scrapy
from scrapy.crawler import CrawlerProcess
class VapeSpider(scrapy.Spider):
name = "vape"
# custom_settings = {
# "FEED_FORMAT": "csv",
# "FEED_URI": "vape.csv",
# "LOG_FILE": "vape.log",
# }
def start_requests(self):
yield scrapy.Request(
"https://buyeliquidonline.com.au/product-category/geek-vape/",
callback=self.parse,
)
def parse(self, response):
for prod in response.css("ul.products:nth-child(2)"):
yield {
"title": prod.css("h2.woocommerce-loop-product__title")
.css("a::text")
.get()
}
process = CrawlerProcess()
process.crawl(VapeSpider)
process.start()
1条答案
按热度按时间tyky79it1#
问题出在css元素选择中。
ul.products:nth-child(2)
一次选择整个所选页面。您需要选择位于li
标记上的所有容器。因此您需要ul.products:nth-child(2) li
,然后使用for loop
输出: