iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >使用python scrapy爬取天气并导出csv文件
  • 922
分享到

使用python scrapy爬取天气并导出csv文件

2024-04-02 19:04:59 922人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录爬取xxx天气安装创建scray爬虫项目文件说明开始爬虫补充:scrapy导出csv时字段的一些问题1.字段顺序问题:2.输出csv有空行的问题总结 爬取xxx天气 爬

爬取xxx天气

爬取网址:https://tianqi.2345.com/today-60038.htm

安装

pip install scrapy

我使用的版本是scrapy 2.5

创建scray爬虫项目

在命令行如下输入命令

scrapy startproject name

name为项目名称
如,scrapy startproject spider_weather
之后再输入

scrapy genspider spider_name 域名

如,scrapy genspider changshu tianqi.2345.com

查看文件夹

- spider_weather
    - spider
        - __init__.py
        - changshu.py
    - __init__.py
    - items.py
    - middlewares.py
    - pipelines.py
    - settings.py 
- scrapy.cfg

文件说明

名称作用
scrapy.cfg项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。(真正爬虫相关的配置信息在settings.py文件中)
items.py设置数据存储模板,用于结构化数据,如:Django的Model
pipelines数据处理行为,如:一般结构化的数据持久化
settings.py配置文件,如:递归的层数、并发数,延迟下载等
spiders爬虫目录,如:创建文件,编写爬虫规则

开始爬虫

1.在spiders文件夹里面对自己创建的爬虫文件进行数据爬取、如在此案例中的spiders/changshu.py

代码演示如下

import scrapy

class ChangshuSpider(scrapy.Spider):
    name = 'changshu'
    allowed_domains = ['tianqi.2345.com']
    start_urls = ['Https://tianqi.2345.com/today-60038.htm']

    def parse(self, response):
        # 日期、天气状态、温度、风级
        # 利用xpath解析数据、不会xpath的同学可以去稍微学习一下,语法简单
        dates = response.xpath('//a[@class="seven-day-item "]/em/text()').getall()
        states = response.xpath('//a[@class="seven-day-item "]/i/text()').getall()
        temps = response.xpath('//a[@class="seven-day-item "]/span[@class="tem-show"]/text()').getall()
        winds = response.xpath('//a[@class="seven-day-item "]/span[@class="wind-name"]/text()').getall()
        # 返回每条数据
        for date, state, temp, wind in zip(dates,states,temps,winds):
            yield {
                'date' : date,
                'state': state,
                'temp': temp,
                'wind': wind
            }

2.在settings.py文件中进行配置

修改UA

USER_AGENT = 'Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWEBKit/537.36 (Khtml, like Gecko) Chrome/95.0.4638.69 Safari/537.36'

修改机器爬虫配置

ROBOTSTXT_OBEY = False

整个文件如下:

# Scrapy settings for spider_weather project
#
# For simplicity, this file contains only settings considered important or
# commonly used. You can find more settings consulting the documentation:
#
#     https://docs.scrapy.org/en/latest/topics/settings.html
#     https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
#     https://docs.scrapy.org/en/latest/topics/spider-middleware.html

BOT_NAME = 'spider_weather'

SPIDER_MODULES = ['spider_weather.spiders']
NEWSPIDER_MODULE = 'spider_weather.spiders'


# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'

# Obey robots.txt rules
ROBOTSTXT_OBEY = False

# Configure maximum concurrent requests perfORMed by Scrapy (default: 16)
#CONCURRENT_REQUESTS = 32

# Configure a delay for requests for the same website (default: 0)
# See https://docs.scrapy.org/en/latest/topics/settings.html#download-delay
# See also autothrottle settings and docs
#DOWNLOAD_DELAY = 3
# The download delay setting will honor only one of:
#CONCURRENT_REQUESTS_PER_DOMAIN = 16
#CONCURRENT_REQUESTS_PER_IP = 16

# Disable cookies (enabled by default)
#COOKIES_ENABLED = False

# Disable Telnet Console (enabled by default)
#TELNETCONSOLE_ENABLED = False

# Override the default request headers:
#DEFAULT_REQUEST_HEADERS = {
#   'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
#   'Accept-Language': 'en',
#}

# Enable or disable spider middlewares
# See https://docs.scrapy.org/en/latest/topics/spider-middleware.html
#SPIDER_MIDDLEWARES = {
#    'spider_weather.middlewares.SpiderWeatherSpiderMiddleware': 543,
#}

# Enable or disable downloader middlewares
# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
#DOWNLOADER_MIDDLEWARES = {
#    'spider_weather.middlewares.SpiderWeatherDownloaderMiddleware': 543,
#}

# Enable or disable extensions
# See https://docs.scrapy.org/en/latest/topics/extensions.html
#EXTENSIONS = {
#    'scrapy.extensions.telnet.TelnetConsole': None,
#}

# Configure item pipelines
# See https://docs.scrapy.org/en/latest/topics/item-pipeline.html
# ITEM_PIPELINES = {
#    'spider_weather.pipelines.SpiderWeatherPipeline': 300,
# }

# Enable and configure the AutoThrottle extension (disabled by default)
# See https://docs.scrapy.org/en/latest/topics/autothrottle.html
#AUTOTHROTTLE_ENABLED = True
# The initial download delay
#AUTOTHROTTLE_START_DELAY = 5
# The maximum download delay to be set in case of high latencies
#AUTOTHROTTLE_MAX_DELAY = 60
# The average number of requests Scrapy should be sending in parallel to
# each remote server
#AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0
# Enable showing throttling stats for every response received:
#AUTOTHROTTLE_DEBUG = False

# Enable and configure HTTP caching (disabled by default)
# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings
#HTTPCACHE_ENABLED = True
#HTTPCACHE_EXPIRATION_SECS = 0
#HTTPCACHE_DIR = 'httpcache'
#HTTPCACHE_IGNORE_HTTP_CODES = []
#HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'

3.然后在命令行中输入如下代码

scrapy crawl changshu -o weather.csv

注意:需要进入spider_weather路径下运行
scrapy crawl 文件名 -o weather.csv(导出文件)

4.结果如下

补充:scrapy导出csv时字段的一些问题

scrapy -o csv格式输出的时候,发现输出文件中字段的顺序不是按照items.py中的顺序,也不是爬虫文件中写入的顺序,这样导出的数据因为某些字段变得不好看,此外,导出得csv文件不同的item之间被空行隔开,本文主要描述解决这些问题的方法。

1.字段顺序问题:

需要在scrapy的spiders同层目录,新建csv_item_exporter.py文件内容如下(文件名可改,目录定死)

from scrapy.conf import settings
from scrapy.contrib.exporter import CsvItemExporter

class MyProjectCsvItemExporter(CsvItemExporter):
def init(self, *args, **kwargs):
delimiter = settings.get(‘CSV_DELIMITER', ‘,')
kwargs[‘delimiter'] = delimiter
fields_to_export = settings.get(‘FIELDS_TO_EXPORT', [])
if fields_to_export :
kwargs[‘fields_to_export'] = fields_to_export
super(MyProjectCsvItemExporter, self).init(*args, **kwargs)

2)在settings.py中新增以下内容

#定义输出格式
FEED_EXPORTERS = {
‘csv': ‘project_name.spiders.csv_item_exporter.MyProjectCsvItemExporter',
}
#指定csv输出字段的顺序
FIELDS_TO_EXPORT = [
‘name',
‘title',
‘info'
]
#指定分隔符
CSV_DELIMITER = ‘,'

设定完毕,执行scrapy crawl spider -o spider.csv的时候,字段就按顺序来了

2.输出csv有空行的问题

此时你可能会发现csv文件中有空行,这是因为scrapy默认输出时,每个item之间的分隔符是空行

解决办法:

在找到exporters.py的CsvItemExporter类,大概在215行中增加newline="",即可。

也可以继承重写CsvItemExporter类

总结 

到此这篇关于使用python scrapy爬取天气并导出csv文件的文章就介绍到这了,更多相关scrapy爬取天气导出csv内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 使用python scrapy爬取天气并导出csv文件

本文链接: https://www.lsjlt.com/news/119824.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用python scrapy爬取天气并导出csv文件
    目录爬取xxx天气安装创建scray爬虫项目文件说明开始爬虫补充:scrapy导出csv时字段的一些问题1.字段顺序问题:2.输出csv有空行的问题总结 爬取xxx天气 爬...
    99+
    2024-04-02
  • 怎么用Python爬取天气并且语言播报
    这篇文章主要讲解了“怎么用Python爬取天气并且语言播报”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python爬取天气并且语言播报”吧!一、 预备知识此案例实现功能:利用网络爬虫...
    99+
    2023-06-16
  • Python如何爬取未来7天天气预报并存储在excel文档中
    这期内容当中小编将会给大家带来有关Python如何爬取未来7天天气预报并存储在excel文档中,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。想知道你家乡未来7天气是如何,是好是坏刮风还是下雨别省得每天都去...
    99+
    2023-06-02
  • java 使用 CSVWriter 库来导出 CSV 文件
    在 Java 中,可以使用 CSVWriter 库来导出 CSV 文件。以下是使用 CSVWriter 库导出 CSV 文件的基本步骤: 添加CSVWriter库依赖: 在 pom.xml 文件中添加以下依赖: com.opencs...
    99+
    2023-08-19
    java 开发语言 servlet
  • 怎么利用python多线程爬取天气网站图片并保存
    这篇文章主要介绍了怎么利用python多线程爬取天气网站图片并保存,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.1 题目指定一个网站,爬取这个网站中的所有的所有图片,例如...
    99+
    2023-06-25
  • 如何利用python多线程爬取天气网站图片并保存
    目录1.1 题目1.2 思路 1.2.1 发送请求1.2.2 解析网页 1.2.3 获取结点 1.2.4 数据保存 (单线程) 1.2.4 数据保存 (多线程)总结1.1 题目 指定...
    99+
    2024-04-02
  • 如何使用Python导出并分析聊天记录
    这篇文章主要介绍了如何使用Python导出并分析聊天记录,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。导出聊天记录生成词云看看你和对象聊了什么导出聊天记录打开消息管理器导出的...
    99+
    2023-06-29
  • 如何使用PHP原生来导出Excel和CSV文件
    这篇文章主要介绍“如何使用PHP原生来导出Excel和CSV文件”,在日常操作中,相信很多人在如何使用PHP原生来导出Excel和CSV文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用PHP原生来导...
    99+
    2023-06-20
  • python使用pandas读取csv文件的方法
    目录pandas读取csv文件的操作1. 读取csv文件在这里记录一下,python使用pandas读取文件的方法用到pandas库的read_csv函数 # -*- coding:...
    99+
    2022-12-23
    python 读取csv文件 pandas读取csv文件
  • python爬虫怎么使用内置的scrapy内置下载文件
    这篇文章主要介绍python爬虫怎么使用内置的scrapy内置下载文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言,其...
    99+
    2023-06-14
  • 使用php 实现生成Excel文件并导出
    在现在的项目里,不管是电商项目还是别的项目,在管理端都会有导出的功能,比方说订单表导出,用户表导出,业绩表导出。这些都需要提前生成excel表,然后在导出,实际上是在代码里生成一张excel表,然后通...
    99+
    2023-09-02
    excel php 开发语言
  • Python使用pandas导入csv文件内容的示例代码
    目录使用pandas导入csv文件内容1. 默认导入2. 指定分隔符3. 指定读取行数4. 指定编码格式5. 列标题与数据对齐使用pandas导入csv文件内容 1. 默认导入 在P...
    99+
    2022-12-23
    Python导入csv文件内容 Python pandas导入csv文件
  • 使用Python pandas读取CSV文件应该注意什么?
    示例文件 将以下内容保存为文件 people.csv。 id,姓名,性别,出生日期,出生地,职业,爱好 1,张小三,m,1992-10-03,北京,工程师,足球 2,李云义,m,...
    99+
    2024-04-02
  • 使用Python读取plist文件并分割
    plist文件简介 根据百度百科介绍,plist是一种文件形式,通常用于储存用户设置,也可以用于存储捆绑的信息,该功能在旧式的Mac OS中是由资源分支提供的。由于Plist中存储的数据是抽象的,其采用的文件格式可以不止一种。 ...
    99+
    2023-01-31
    文件 Python plist
  • 如何使用Node.js爬取任意网页资源并输出高质量PDF文件到本地
    这篇文章主要讲解了“如何使用Node.js爬取任意网页资源并输出高质量PDF文件到本地”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Node.js爬...
    99+
    2024-04-02
  • python爬取bilibili网页排名,视频,播放量,点赞量,链接等内容并存储csv文件中
    首先要了解html标签,标签有主有次,大致了解以一下,主标签是根标签,也是所有要爬取的标签的结合体 先了解一下待会要使用代码属性: #获取属性 a.attrs  获取a所有的属性和...
    99+
    2024-04-02
  • 如何利用Python读取CSV文件并计算某一列的均值和方差
    今天就跟大家聊聊有关如何利用Python读取CSV文件并计算某一列的均值和方差,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。近日需要对excel的csv文件进行处理,求取某银行历年股...
    99+
    2023-06-22
  • 使用BufferedReader读取TXT文件中数值,并输出最大值
    目录BufferedReader读取TXT文件中数值输出最大值1.题目2.BufferedReader 介绍3.思路4.问题5.解决6.小结一下使用BufferedReader读取文...
    99+
    2024-04-02
  • 如何使用python实现简单爬取网页数据并导入MySQL中的数据库
    前言:要使用 Python 爬取网页数据并将数据导入 MySQL 数据库,您需要使用 Requests 库进行网页抓取,使用 BeautifulSoup 库对抓取到的 HTML 进行解析,并使用 PyMySQL 库与 MySQL 进行交互。...
    99+
    2023-10-18
    python 数据库 爬虫
  • 如何使用BufferedReader读取TXT文件中数值并输出最大值
    本篇内容主要讲解“如何使用BufferedReader读取TXT文件中数值并输出最大值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用BufferedReader读取TXT文件中数值并输出...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作