嵩天老师爬虫实例笔记(五)--股票数据Scrapy爬虫实例

这个爬虫实例采用Scrapy的框架,理解来不是很好,需要理解其框架的执行过程才行,这次边看边写出来一天的时间用来调试找bug,真是写代码半小时,差错数小时。错在三个地方,都是那个粗心啊,一个group(0)后小括号写成了中括号!一个是正则表达式后少了个符号!一个是.findall()写错,正确应该是.find_all()!
下面这个代码区域由注释组成,旨在梳理编写爬虫的大框架,梳理思路。后面两个截图是详细代码。

#股票数据Scrapy爬虫实例

#功能描述:
#		技术路线:Scrapy
#		目标:获取上交所和深交所所有股票的名称和交易信息
#		输出:保存到文件中。
#		
#获得股票代码URL:http://quote.eastmoney.com/stock_list.html
#获得具体股票信息URL:https://xueqiu.com/S/SZ300783
#步骤:
#		步骤1.建立工程和Spider模板
#		      在命令行依次使用下面三个命令:
#		      scrapy startproject XueqiuStocks
#		      cd XueqiuStocks
#		      scrapy genspider stocks xueqiu.com
#		      进一步修改stocks.py
#		步骤2:编写Spider
'''
    start_urls = ['http://quote.eastmoney.com/stock_list.html']

    def parse(self, response):
    	for href in response.css('a::attr(href)').extract():
			try:
				stock = re.search(r'[s][hz]\d{6}',href).group(0)
				stock = stock.upper()
				url = 'https://xueqiu.com/S/' + stock
				yield scrapy.Request(url,callback = self.parse_stock)
			except:
				continue
    
    def parse_stock(self,response):
    	infoDict = {}
    	name = re.search(r'<div class=\"stock-name\">(.*?)</div>',response.text).group(1)
    	infoDict.update({'股票名称':name.__str__()})
    	tableHtml = re.search(r'\"tableHtml\":\"(.*?)\",',response.text).group(1)
    	soup = BeautifulSoup(tableHtml,"html.parse")
    	table = soup.table
    	for i in table.find_all('td'):
    		line = i.text
    		l = line.split(":")
    		infoDict.update({l[0].__str__():l[1].__str__()})
    	yield infoDict
'''
#		步骤3:编写ITEMPipelines
#			 配置pipelines.py文件
#			 定义对爬取项(Scraped Item)的处理类。
		'''
			#自定义一个Pipeline
			class XueqiustocksInfoPipeline(object):
				def open_spider(self,spider):
					self.f = open("XueqiuStocksInfo.txt","w")

				def close_spider(self,spider):
					self.f.close()

				def process_item(self,item,spider):
					try:
						line = str(dict(item)) + '\n'
						self.f.write(line)
					except:
						pass
					return item
		'''

#			 配置ITEM_PIPELINES选项
#			 在settings.py中修改
#			     ITEM_PIPELINES = {    'XueqiuStocks.pipelines.XueqiustocksInfoPipeline': 300,}
#			     USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6'
#			     CONCURRENT_REQUESTS = 16
#			步骤4.运行爬虫,在命令行输入:scrapy crawl stocks

完整代码如下:
在这里插入图片描述
在这里插入图片描述
另外还需要设置的settings.py中修改的部分:

ITEM_PIPELINES = {
    'XueqiuStocks.pipelines.XueqiustocksInfoPipeline': 300,
}
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36'

详细的这个scrapy框架编写爬虫实例,见这篇博文https://blog.csdn.net/weixin_43978546/article/details/105117901,讲得那不是一般的详细,几乎把嵩天老师的视频从头到尾,结合实际情况,图文并茂形象描述了出来。
这个博主写文很少确用MARKDOWN标记用的淋漓尽致,佩服,曾经诺诺同学和骏豪同学也是同款,感谢这些博主的无私奉献和乐于分享。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值