首先,我从网站上抓取了所有的硬币链接,并要求这些链接。 但是scrapy没有从链接中连续请求列表.after请求链接成功的刮取数据,但当保存到csv文件时,每次成功刮取一个项目后都会产生一个空行。Result Screenshot 我期待着它将要求从链接列表串行,它不会使任何空白排。怎么排我能做到吗?你知道吗
我使用的是python3.6和scrapy版本1.5.1
我的代码:
import scrapy
class MarketSpider(scrapy.Spider):
name = 'market'
allowed_domains = ['coinmarketcap.com']
start_urls = ['http://coinmarketcap.com/']
def parse(self, response):
Coin = response.xpath('//*[@class="currency-name-container link-secondary"]/@href').extract()
for link in Coin:
absolute_url = response.urljoin(link)
yield scrapy.Request(absolute_url,callback=self.website_link)
def website_link(self,response):
link = response.xpath('//*[@class="list-unstyled details-panel-item--links"]/li[2]/a/@href').extract()
name = response.xpath('normalize-space(//h1)').extract()
yield{'Name': name ,'Link': link}
Scrapy是一个异步框架,多个请求同时执行,响应在接收时被解析。你知道吗
可靠地控制首先解析哪些响应的唯一方法是关闭此功能,例如将CONCURRENT_REQUESTS设置为1。
不过,这会降低spider的效率,而且这种解析顺序的控制很少是必要的,所以如果可能的话,我会避免这种情况。你知道吗
windows上csv导出中的额外换行是已知问题,将在下一个scrapy版本中修复。
我认为scrapy是以多线程(生产者/消费者)的方式访问页面的。这可以解释结果的非连续性。
为了验证这个假设,您可以将配置更改为使用单个线程。你知道吗
对于空白链接,您确定您的名称或链接变量是否包含\n?你知道吗
相关问题 更多 >
编程相关推荐