日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 网络爬虫笔记11 -- Scrapy 实战

發(fā)布時間:2025/3/12 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 网络爬虫笔记11 -- Scrapy 实战 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Python 網(wǎng)絡(luò)爬蟲筆記11 – Scrapy 實戰(zhàn)


Python 網(wǎng)絡(luò)爬蟲系列筆記是筆者在學(xué)習嵩天老師的《Python網(wǎng)絡(luò)爬蟲與信息提取》課程及筆者實踐網(wǎng)絡(luò)爬蟲的筆記。

課程鏈接:Python網(wǎng)絡(luò)爬蟲與信息提取
參考文檔:
Requests 官方文檔(英文)
Requests 官方文檔(中文)
Beautiful Soup 官方文檔
re 官方文檔
Scrapy 官方文檔(英文)
Scrapy 官方文檔(中文)


股票數(shù)據(jù) Scrapy 爬蟲


介紹:

  • 爬取中國股市的股票信息, 從東方財富網(wǎng)獲取股票列表,根據(jù)股票列表逐個到百度股票獲取個股信息根據(jù)股票列表逐個到百度股票獲取個股信息,將結(jié)果存儲到文件將結(jié)果存儲到文件
  • 東方財富網(wǎng):http://quote.eastmoney.com/stocklist.html
  • 百度股票:https://gupiao.baidu.com/stock/
  • 單個股票:https://gupiao.baidu.com/stock/sz002439.html

步驟:

  • 建立工程和 Spider 模板

    # cmd 依次輸入以下命令 scrapy startproject scrapy_stocks cd scrapy_stocks scrapy genspider stocks gupiao.baidu.com
  • 編寫Spider,處理鏈接爬取和頁面解析

    • 配置stocks.py文件
    • 修改對返回頁面的處理
    • 修改對新增URL爬取請求的處理
  • 編寫ITEM Pipelines,處理信息存儲

    • 配置pipelines.py文件
    • 定義對爬取項(Scraped Item)的處理類
    • 配置ITEM_PIPELINES選項
    # 在settings.py文件中配置ITEM_PIPELINES選項,改為自己寫的類名 ITEM_PIPELINES = {'scrapy_stocks.pipelines.ScrapyStocksPipeline': 300,}
  • 運行爬蟲

    # cmd輸入以下命令 scrapy crawl stocks
  • 配置優(yōu)化

    修改 settings.py文件的相應(yīng)項

    項說明
    NCURRENT_REQUESTSDownloader最大并發(fā)請求下載數(shù)量,默認32
    NCURRENT_ITEMSItem Pipeline最大并發(fā)ITEM處理數(shù)量,默認100
    NCURRENT_REQUESTS_PER_DOMAIN每個目標域名最大的并發(fā)請求數(shù)量,默認8
    NCURRENT_REQUESTS_PER_IP每個目標IP最大的并發(fā)請求數(shù)量,默認0,非0有效
  • stocks.py 文件:

    # -*- coding: utf-8 -*- import scrapy import reclass StocksSpider(scrapy.Spider):name = "stocks"start_urls = ['http://quote.eastmoney.com/stocklist.html']def parse(self, response):"""解析 Response 對象,產(chǎn)生額外的爬取請求"""for href in response.css('a::attr(href)').extract():try:stock = re.findall(r's[hz]\d{6}', href)[0]url = 'https://gupiao.baidu.com/stock/' + stock + '.html'yield scrapy.Request(url, callback=self.parse_stock)except:continuedef parse_stock(self, response):"""解析 Response 對象"""info_dict = {}stock_info = response.css('.stock-bets')name = stock_info.css('.bets-name').extract()[0]key_list = stock_info.css('dt').extract()value_list = stock_info.css('dd').extract()for i in range(len(key_list)):key = re.findall(r'>.*</dt>', key_list[i])[0][1:-5]try:val = re.findall(r'\d+\.?.*</dd>', value_list[i])[0][0:-5]except:val = '--'info_dict[key] = valinfo_dict.update({'股票名稱': re.findall('\s.*\(', name)[0].split()[0] + re.findall('\>.*\<', name)[0][1:-1]})yield info_dict

    pipelines.py 文件:

    class BaiduStocksPipeline(object):"""直接返回解析結(jié)果"""def process_item(self, item, spider):return itemclass BaiduStocksInfoPipeline(object):"""保存解析結(jié)果到文件"""def open_spider(self, spider):self.f = open('BaiduStockInfo.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:passreturn item

    settings.py 文件:

    ITEM_PIPELINES = {'scrapy_stocks.pipelines.BaiduStocksInfoPipeline': 300, }
    與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

    總結(jié)

    以上是生活随笔為你收集整理的Python 网络爬虫笔记11 -- Scrapy 实战的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。