这个 Sprite SVG 可以抓取吗?
Is this Sprite SVG possible to scrape?
我可以用标准的 Scrapy 抓取它还是需要使用 Selenium?
html是:
<td class="example"><sprite-svg name="EXAMPLE2"><svg><use
xlink:href="/spritemap/1_0_30#sprite-EXAMPLE2"></use></svg></sprite-svg></td>
我不知何故需要值“EXAMPLE2”。
在浏览器中工作的 xpath 是 //td[@class='example']//*[local-name() = 'svg']
当我将其放入 scrapy 中时,我使用了以下代码,但出现了 XPATH 错误。
'example' : div.xpath(".//td[@class='example']//*[local-name() = 'svg']
()").extract()
有什么办法可以抓取它吗?
是的。你可以用 scrapy 做到这一点:
response.xpath("//td[@class='table__cell--tight race-runners__box']/sprite-svg/@name").getall()
正在运行的 scrapy 代码:
import scrapy
class Test(scrapy.Spider):
name = 'Test'
start_urls = [
'https://www.thedogs.com.au/racing/gawler/2020-07-07/1/the-bunyip-maiden-stake-pr2-division1']
def parse(self, response):
return {"nameList": response.xpath("//td[@class='table__cell--tight race-runners__box']/sprite-svg/@name").getall()}
查看 table,每个 svg 精灵都在 class 'rug_X'
下
类似
import scrapy
class RaceSpider(scrapy.Spider):
name = 'race'
allowed_domains = ['thedogs.com.au']
start_urls = ['https://www.thedogs.com.au/racing/gawler/2020-07-07/1/the-bunyip-maiden-stake-pr2-division1']
item = {}
def parse(self, response):
row = response.xpath('//tbody/tr')
dog = a.xpath('.//td[@class="table__cell--tight race-runners__name"]/div/a/text()').get()
number = a.xpath('.//td[@class="table__cell--tight race-runners__box"]/sprite-svg/@name').get()
cleaned_num = int(number.replace('rug_',''))
grade = a.xpath('.//td[@class="race-runners__grade"]/text()').get()
item = {'grade':grade, 'greyhound':dog,'rug':cleaned_num}
yield item
您还可以使用带有自定义函数的项目加载器来清理您收到的响应。
我可以用标准的 Scrapy 抓取它还是需要使用 Selenium?
html是:
<td class="example"><sprite-svg name="EXAMPLE2"><svg><use
xlink:href="/spritemap/1_0_30#sprite-EXAMPLE2"></use></svg></sprite-svg></td>
我不知何故需要值“EXAMPLE2”。
在浏览器中工作的 xpath 是 //td[@class='example']//*[local-name() = 'svg']
当我将其放入 scrapy 中时,我使用了以下代码,但出现了 XPATH 错误。
'example' : div.xpath(".//td[@class='example']//*[local-name() = 'svg']
()").extract()
有什么办法可以抓取它吗?
是的。你可以用 scrapy 做到这一点:
response.xpath("//td[@class='table__cell--tight race-runners__box']/sprite-svg/@name").getall()
正在运行的 scrapy 代码:
import scrapy
class Test(scrapy.Spider):
name = 'Test'
start_urls = [
'https://www.thedogs.com.au/racing/gawler/2020-07-07/1/the-bunyip-maiden-stake-pr2-division1']
def parse(self, response):
return {"nameList": response.xpath("//td[@class='table__cell--tight race-runners__box']/sprite-svg/@name").getall()}
查看 table,每个 svg 精灵都在 class 'rug_X'
下类似
import scrapy
class RaceSpider(scrapy.Spider):
name = 'race'
allowed_domains = ['thedogs.com.au']
start_urls = ['https://www.thedogs.com.au/racing/gawler/2020-07-07/1/the-bunyip-maiden-stake-pr2-division1']
item = {}
def parse(self, response):
row = response.xpath('//tbody/tr')
dog = a.xpath('.//td[@class="table__cell--tight race-runners__name"]/div/a/text()').get()
number = a.xpath('.//td[@class="table__cell--tight race-runners__box"]/sprite-svg/@name').get()
cleaned_num = int(number.replace('rug_',''))
grade = a.xpath('.//td[@class="race-runners__grade"]/text()').get()
item = {'grade':grade, 'greyhound':dog,'rug':cleaned_num}
yield item
您还可以使用带有自定义函数的项目加载器来清理您收到的响应。