在 scrapy 上正确的 Xpath
Correct Xpath for on scrapy
我只想使用 Xpath
从 category
获取数据
第 link 页:https://onepagelove.com/3wcc
这是我的输出:
['Digital Product', ',', 'Finance', ',', 'Landing Page', ',', 'Thaleah Fat', ',', '23 Feb 2022 by', 'Rob Hope']}
这是网页中的数据示例:
这是我的代码:
from scrapy.http import Request
import scrapy
class PushpaSpider(scrapy.Spider):
name = 'pushpa'
start_urls = ['https://onepagelove.com/inspiration']
def parse(self, response):
books = response.xpath("//div[@class='thumb-image']//a//@href").extract()
for book in books:
absolute_url = response.urljoin(book)
yield Request(absolute_url, callback=self.parse_book)
def parse_book(self, response):
coordinate = response.xpath("//div[@class='inspo-links']//span[2]//text()").getall()
coordinate = [i.strip() for i in coordinate]
# remove empty strings:s
coordinate = [i for i in coordinate if i]
yield{
'category':coordinate
}
该网站在 header 中有多个 inspo-links
,因此您正在从许多不同类型的数据中提取。
Xpath 版本:
def parse_book(self, response):
xpath_coordinate = response.xpath(
"//span[@class='link-list']")[1].xpath("a/text()").extract()
yield {
'category': xpath_coordinate
}
CSS版本:
def parse_book(self, response):
content = response.css('div.review-content')
coordinate = header.css("span.link-list")[1].css("a::text").extract()
yield {
'category': coordinate
}
这里的这个片段只会为您提供类别。
在您的图像示例中,它会给您 ["Experimental", "Informational"]
注意:在您的主要方法中,对于非书籍且没有类别的内容,您会得到一个额外的 link,scrapy 会自动处理错误,因此您仍然可以获得完整的输出。
这是一个 Xpath 示例,它从图像中获取所有 3 种类型的数据:
def parse_book(self, response):
xpath_coordinate = response.xpath(
"//span[@class='link-list']")
features = xpath_coordinate[0].xpath("a/text()").extract()
category = xpath_coordinate[1].xpath("a/text()").extract()
typeface = xpath_coordinate[2].xpath("a/text()").extract()
yield {
'feature': features,
'category': category,
'typeface': typeface
}
我只想使用 Xpath
从category
获取数据
第 link 页:https://onepagelove.com/3wcc
这是我的输出:
['Digital Product', ',', 'Finance', ',', 'Landing Page', ',', 'Thaleah Fat', ',', '23 Feb 2022 by', 'Rob Hope']}
这是网页中的数据示例:
这是我的代码:
from scrapy.http import Request
import scrapy
class PushpaSpider(scrapy.Spider):
name = 'pushpa'
start_urls = ['https://onepagelove.com/inspiration']
def parse(self, response):
books = response.xpath("//div[@class='thumb-image']//a//@href").extract()
for book in books:
absolute_url = response.urljoin(book)
yield Request(absolute_url, callback=self.parse_book)
def parse_book(self, response):
coordinate = response.xpath("//div[@class='inspo-links']//span[2]//text()").getall()
coordinate = [i.strip() for i in coordinate]
# remove empty strings:s
coordinate = [i for i in coordinate if i]
yield{
'category':coordinate
}
该网站在 header 中有多个 inspo-links
,因此您正在从许多不同类型的数据中提取。
Xpath 版本:
def parse_book(self, response):
xpath_coordinate = response.xpath(
"//span[@class='link-list']")[1].xpath("a/text()").extract()
yield {
'category': xpath_coordinate
}
CSS版本:
def parse_book(self, response):
content = response.css('div.review-content')
coordinate = header.css("span.link-list")[1].css("a::text").extract()
yield {
'category': coordinate
}
这里的这个片段只会为您提供类别。
在您的图像示例中,它会给您 ["Experimental", "Informational"]
注意:在您的主要方法中,对于非书籍且没有类别的内容,您会得到一个额外的 link,scrapy 会自动处理错误,因此您仍然可以获得完整的输出。
这是一个 Xpath 示例,它从图像中获取所有 3 种类型的数据:
def parse_book(self, response):
xpath_coordinate = response.xpath(
"//span[@class='link-list']")
features = xpath_coordinate[0].xpath("a/text()").extract()
category = xpath_coordinate[1].xpath("a/text()").extract()
typeface = xpath_coordinate[2].xpath("a/text()").extract()
yield {
'feature': features,
'category': category,
'typeface': typeface
}