我正在使用Scrapy从一个网站上提取信息。我的目标是使用Scrapy拉高尔夫俱乐部的名称,价格等,并跟踪冬季的成本,并在价格下跌时购买我想要的东西。
到目前为止,我有它拉俱乐部的名称,但相同的名称38次。(有38个俱乐部在第一页。)
我想知道为什么它打印相同的名字而不是下一个名字?我使用了我在课程中做的一个例子,来做这个当前的例子。上面的代码集是我课程中的一个,第二个是我的。
``导入 scrapy
class Spiderbook0Spider(scrapy.Spider):
name = "spiderbook0"
allowed_domains = ["books.toscrape.com"]
start_urls = ["https://books.toscrape.com"]
def parse(self, response):
books = response.css('article.product_pod') # Get all the books on the first page
for book in books: #Get a single book
print(book.css('h3 a::text').get())
字符串
- 我的代码-
import scrapy
class WedgepriceSpider(scrapy.Spider):
name = "wedgeprice"
allowed_domains = ["golftown.com"]
start_urls = ["https://golftown.com/en-CA/clubs/wedges/"]
def parse(self, response):
wedges = response.css("div.product-tile-top > div.product-image > a.thumb-link ")
print("***********************************")
print("***********************************")
print(wedges)
for wedge in wedges:
print(response.xpath("//*[@class = 'name-link']/@title").get())
print("***********************************")
print("***********************************")
型
1条答案
按热度按时间xxe27gdn1#
这是因为在for循环中,每次循环迭代都从html文件的根执行xpath查询。
相反,你要做的是首先查询一些父元素,它的递归次数与你试图打印的子元素相同,然后在第二个表达式中,你可以使用来自父元素的相对XPATH表达式来获取值并将其打印到终端。
举例来说:
字符串
输出
型