嵩天老師爬蟲實例筆記(五)--股票數據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標記用的淋漓盡致,佩服,曾經諾諾同學和駿豪同學也是同款,感謝這些博主的無私奉獻和樂於分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章