python之scrapy爬取股票信息

本文介绍如何使用Scrapy框架抓取网络上的股票数据,包括配置并发链接选项、编写Spider文件和Pipelines的过程。通过实例演示了如何解析网页中的股票信息,并将数据保存到本地文件。

如果有错误请指出
爬取的股票数据的位置的确定
在这里插入图片描述
步骤
在这里插入图片描述
配置并发链接选项
在这里插入图片描述
步骤一:
在这里插入图片描述
步骤二:编写spider文件
打开对应文件

# -*- coding: utf-8 -*-
import scrapy
import re


class StocksSpider(scrapy.Spider):
    name = 'stocks'
    allowed_domains = ['baidu.com']
    start_urls = ['http://baidu.com/']

    def parse(self, response):
        #对页面中所有的a标签进行提取
        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:
                continue
    #从百度股票的单个页面中提取信息的方法
    def parse_stock(self,response):
        infoDict = {}
        stockInfo = response.css('.stock-bets')
        name = stockInfo.css('.bets-name').extract()[0]
        keyList = stockInfo.css('dt').extract()
        valueList = stockInfo.css('dd').extract()
        for i in range(len(keyList)):
            key = re.findall(r'>.*<',keyList[i])[0][1:-5]
            try:
                val = re.findall(r'\d+\.?.*',valueList[i])[0][1:-5]
            except:
                val = '--'
            infoDict[key] = val
        infoDict.update(
            {'股票名称': re.findall('\s.*\(',name)[0].split()[0] +re.findall('\>.*\<',name)[0][1:-1]})
        yield infoDict

步骤三:编写Piplines
在这里插入图片描述

# -*- coding: utf-8 -*-

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html


class BaidustocksPipeline(object):
    def process_item(self, item, spider):
        return item


class BaidustocksInfoPipeline(object):
    # 当一个爬虫被调用时对应的pipelines对应的方法
    def open_spider(self,spider):
        self.f = open('BaiduStockInfo.txt','w')

    # 一个爬虫关闭或结束时对应的pipelines对应的方法
    def close_spider(self,spider):
        self.f.close()

    # 对每个item项进行处理时对应的方法
    def process_item(self,item,spider):
        try:
            line = str(dict(item))+'\n'
            self.f.close(line)
        except:
            pass
        return  item

在这里插入图片描述
最后在cmd中,使用一下命令执行函数

scrapy crawl stocks
### 使用Scrapy框架爬取智联招聘职位信息的步骤 为了使用PythonScrapy爬取智联招聘网站上的职位数据,需要进行以下操作: #### 1. 环境准备 确保已经安装了Scrapy库。如果尚未安装,可以通过以下命令安装: ```bash pip install scrapy ``` 此外,还需要安装数据库驱动(如MySQL或MongoDB),以便将爬取的数据存储到数据库中[^5]。 #### 2. 创建Scrapy项目 使用以下命令创建一个新的Scrapy项目: ```bash scrapy startproject zhilian_spider ``` 这将生成一个名为`zhilian_spider`的项目目录结构[^4]。 #### 3. 定义数据项 在`items.py`文件中定义需要爬取的数据字段。例如,职位名称、公司名称、薪资、福利等信息可以定义如下: ```python import scrapy class ZhilianItem(scrapy.Item): job_name = scrapy.Field() # 职位名称 company_name = scrapy.Field() # 公司名称 salary = scrapy.Field() # 薪资 welfare = scrapy.Field() # 福利 address = scrapy.Field() # 地址 experience = scrapy.Field() # 经验要求 education = scrapy.Field() # 学历要求 ``` 上述代码定义了爬取的基本字段[^3]。 #### 4. 编写爬虫逻辑 在`spiders`目录下创建一个新的爬虫文件,例如`zhilian.py`,并编写爬虫逻辑。以下是一个简单的示例: ```python import scrapy from zhilian_spider.items import ZhilianItem class ZhilianSpider(scrapy.Spider): name = "zhilian" allowed_domains = ["www.zhaopin.com"] start_urls = [ "https://www.zhaopin.com/job_list.html" # 替换为实际的职位列表页面URL ] def parse(self, response): for job in response.css(&#39;div.job-info&#39;): item = ZhilianItem() item[&#39;job_name&#39;] = job.css(&#39;a::text&#39;).get() item[&#39;company_name&#39;] = job.css(&#39;div.company-name a::text&#39;).get() item[&#39;salary&#39;] = job.css(&#39;p.salary::text&#39;).get() item[&#39;welfare&#39;] = &#39;, &#39;.join(job.css(&#39;div.welfare ul li::text&#39;).getall()) item[&#39;address&#39;] = job.css(&#39;span.work-address::text&#39;).get() yield item next_page = response.css(&#39;a.next-page::attr(href)&#39;).get() if next_page is not None: yield response.follow(next_page, self.parse) ``` 此代码片段实现了基本的职位信息提取,并通过CSS选择器定位页面元素[^2]。 #### 5. 数据存储 将爬取的数据存储到本地文件或数据库中。例如,可以将数据保存为JSON格式或存储到MongoDB中。 - **保存为JSON**:在运行爬虫时添加`-o`参数: ```bash scrapy crawl zhilian -o jobs.json ``` - **保存到MongoDB**:需要在`settings.py`中配置MongoDB连接信息,并实现数据管道[^4]。 #### 6. 运行爬虫 完成上述步骤后,运行以下命令启动爬虫: ```bash scrapy crawl zhilian ``` ### 注意事项 -爬取动态加载的内容时,可能需要结合Selenium或其他工具模拟浏览器行为。 - 确保遵守目标网站的robots.txt规则和相关法律法规[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值