尝试使用 Scrapy 抓取数据但只得到空白答案
Trying to use Scrapy to scrape data but only getting blank answers
我目前正在尝试从该网站抓取特定数据,但是当我在此之后使用 cmd 进行抓取时,json 和 csv 文件最终变成空白,我做错了什么?
import scrapy
class RatesSpider(scrapy.Spider):
name = 'rates'
allowed_domains = ['https://www.ratehub.ca/best-mortgage-rates/5-year/fixed']
start_urls = ['http://https://www.ratehub.ca/best-mortgage-rates/5-year/fixed/']
def parse(self, response):
for row in response.xpath('//*[@id="AllRatesTable_SpQFd"]//tr'):
yield {
'Rate' : row.xpath('td[1]//span').get(),
'Provider': row.xpath('td[2]//text()').get(),
}
我已经尝试通过多种方式解决此问题,包括更改 table 的 xpath,但最终结果是 csv 中甚至没有标签。
我没有时间全面测试您的代码(即您的 xpath 表达式),但我可以给您一些顶级指导:
- A) 在
allowed_domains
中,您应该只包含 ratehub.ca
而不是当前拥有的整个 link。有关详细信息,请参阅 docs。
假设您的目标 url 是 https://www.example.com/1.html,然后将 'example.com' 添加到列表中
- A) 在您的
start_urls
中,请注意您正在复制 http://
部分,这肯定行不通。
B) 在你的 start_urls
中,你应该删除最后一个 /
,就好像我没记错一样,scrapy 会自动添加它。
- 您确定禁用 Java-Script 后 table 不会消失吗?我尝试用您的
xpath
在 HTML 树中搜索 table //*@id="AllRatesTable_SpQFd"]//tr
但没有返回任何内容。我建议您确保禁用 java-script 并重试以确保其正常工作。
- 通过在以下语句的最后部分添加
text()
,确保提取回文本。 'rate'不是文字吗?
yield {
'Rate' : row.xpath('td[1]//span//text()').get(),
'Provider': row.xpath('td[2]//text()').get(),
}
我目前正在尝试从该网站抓取特定数据,但是当我在此之后使用 cmd 进行抓取时,json 和 csv 文件最终变成空白,我做错了什么?
import scrapy
class RatesSpider(scrapy.Spider):
name = 'rates'
allowed_domains = ['https://www.ratehub.ca/best-mortgage-rates/5-year/fixed']
start_urls = ['http://https://www.ratehub.ca/best-mortgage-rates/5-year/fixed/']
def parse(self, response):
for row in response.xpath('//*[@id="AllRatesTable_SpQFd"]//tr'):
yield {
'Rate' : row.xpath('td[1]//span').get(),
'Provider': row.xpath('td[2]//text()').get(),
}
我已经尝试通过多种方式解决此问题,包括更改 table 的 xpath,但最终结果是 csv 中甚至没有标签。
我没有时间全面测试您的代码(即您的 xpath 表达式),但我可以给您一些顶级指导:
- A) 在
allowed_domains
中,您应该只包含ratehub.ca
而不是当前拥有的整个 link。有关详细信息,请参阅 docs。
假设您的目标 url 是 https://www.example.com/1.html,然后将 'example.com' 添加到列表中 - A) 在您的
start_urls
中,请注意您正在复制http://
部分,这肯定行不通。 B) 在你的start_urls
中,你应该删除最后一个/
,就好像我没记错一样,scrapy 会自动添加它。 - 您确定禁用 Java-Script 后 table 不会消失吗?我尝试用您的
xpath
在 HTML 树中搜索 table//*@id="AllRatesTable_SpQFd"]//tr
但没有返回任何内容。我建议您确保禁用 java-script 并重试以确保其正常工作。 - 通过在以下语句的最后部分添加
text()
,确保提取回文本。 'rate'不是文字吗?
yield {
'Rate' : row.xpath('td[1]//span//text()').get(),
'Provider': row.xpath('td[2]//text()').get(),
}