scrapy爬虫框架你还不会吗?简单使用爬虫框架采集网站数据

news/2024/5/20 20:39:53/文章来源:https://blog.csdn.net/chinaherolts2008/article/details/112911997

前言
本文的文字及图片过滤网络,可以学习,交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

本篇文章就使用python爬虫框架scrapy采集网站的一些数据。

Python爬虫、数据分析、网站开发等案例教程视频免费在线观看

https://www.xin3721.com/eschool/pythonxin3721/

基本开发环境
Python 3.6
pycharm
如何安装scrapy

在cmd命令行当中 pip install scrapy就可以安装了。但是一般情况都会出现网络超时的情况。

建议切换国内常规源安装 pip install -i国内常规地址包名

例如:

pip install -i https://mirrors.aliyun.com/pypi/simple/ scrapy

国内常用源别名地址:

清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/ 
豆瓣:http://pypi.douban.com/simple/

你可能会出现的报错:

在安装Scrapy的过程中可能会遇到VC ++等错误,可以安装删除模块的离线包

在这里插入图片描述

Scrapy如何爬取网站数据

本篇文章以豆瓣电影Top250的数据为例,讲解一下scrapy框架爬取数据的基本流程。

在这里插入图片描述

豆瓣Top250这个数据就不过多分析,静态网站,网页结构十分适合写爬取,所以很多基础入门的爬虫案例都是以豆瓣电影数据以及猫眼电影数据为例的。

Scrapy的爬虫项目的创建流程
1.创建一个爬虫项目

在Pycharm中选择Terminal在Local里面python基础教程输入

scrapy startproject +(项目名字<独一无二>)

在这里插入图片描述

2.cd切换到爬虫项目目录

在这里插入图片描述

3.创建爬虫文件

scrapy genspider(+爬虫文件的名字<独一无二的>)(+域名限制)

在这里插入图片描述

在这里插入图片描述

这就对于scrapy的项目创建以及爬虫文件创建完成了。

Scrapy的爬虫代码编写
1,在settings.py文件中关闭robots协议默认是True

在这里插入图片描述

2,在爬虫文件下修改起始网址

start_urls = [‘https://movie.douban.com/top250?filter=’]

把start_urls改成豆瓣导航网址的链接,也就是你爬取c#教程数据的第一页的url地址

3,写解析数据的业务逻辑

爬取内容如下:

在这里插入图片描述

douban_info.py

import scrapyfrom ..items import DoubanItemclass DoubanInfoSpider(scrapy.Spider):name = 'douban_info'allowed_domains = ['douban.com']start_urls = ['https://movie.douban.com/top250?start=0&filter=']def parse(self, response):lis = response.css('.grid_view li')print(lis)for li in lis:title = li.css('.hd span:nth-child(1)::text').get()movie_info = li.css('.bd p::text').getall()info = ''.join(movie_info).strip()score = li.css('.rating_num::text').get()number = li.css('.star span:nth-child(4)::text').get()summary = li.css('.inq::text').get()print(title)yield DoubanItem(title=title, info=info, score=score, number=number, summary=summary)href = response.css('#content .next a::attr(href)').get()if href:next_url = 'https://movie.douban.com/top250' + hrefyield scrapy.Request(url=next_url, callback=self.parse)

itmes.py

import scrapyclass DoubanItem(scrapy.Item):# define the fields for your item here like:title = scrapy.Field()info = scrapy.Field()score = scrapy.Field()number = scrapy.Field()summary = scrapy.Field()

middlewares.py

import fakerdef get_cookies():"""获取cookies的函数"""headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36'}response = requests.get(url='https://movie.douban.com/top250?start=0&filter=',headers=headers)return response.cookies.get_dict()def get_proxies():"""代理请求的函数"""proxy_data = requests.get(url='http://127.0.0.1:5000/get/').json()return proxy_data['proxy']class HeadersDownloaderMiddleware:"""headers中间件"""def process_request(self, request, spider):# 可以拿到请求体fake = faker.Faker()# request.headers  拿到请求头, 请求头是一个字典request.headers.update({'user-agent': fake.user_agent(),})return Noneclass CookieDownloaderMiddleware:"""cookie中间件"""def process_request(self, request, spider):# request.cookies 设置请求的cookies, 是字典# get_cookies()  调用获取cookies的方法request.cookies.update(get_cookies())return Noneclass ProxyDownloaderMiddleware:"""代理中间件"""def process_request(self, request, spider):# 获取请求的 meta , 字典request.meta['proxy'] = get_proxies()return None

pipelines.py

import csvclass DoubanPipeline:def __init__(self):self.file = open('douban.csv', mode='a', encoding='utf-8', newline='')self.csv_file = csv.DictWriter(self.file, fieldnames=['title', 'info', 'score', 'number', 'summary'])self.csv_file.writeheader()def process_item(self, item, spider):dit = dict(item)dit['info'] = dit['info'].replace('\n', "").strip()self.csv_file.writerow(dit)return itemdef spider_closed(self, spider) -> None:self.file.close()

setting.py

# Scrapy settings for douban 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.htmlBOT_NAME = 'douban'SPIDER_MODULES = ['douban.spiders']
NEWSPIDER_MODULE = 'douban.spiders'# Crawl responsibly by identifying yourself (and your website) on the user-agent
#USER_AGENT = 'douban (+http://www.yourdomain.com)'# 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 = {
#    'douban.middlewares.DoubanSpiderMiddleware': 543,
# }# Enable or disable downloader middlewares
# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
DOWNLOADER_MIDDLEWARES = {'douban.middlewares.HeadersDownloaderMiddleware': 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 = {'douban.pipelines.DoubanPipeline': 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'

4,运行爬虫vb.net教程
程序

在这里插入图片描述

输入命令 scrapy crawl +爬虫文件名

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_744064.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python爬取视频网站弹幕,并做成词云图

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。 作者&#xff1a;张同学 来源&#xff1a;凹凸数据 Python爬虫、数据分析、网站开发等案例教程vb.net教程视频免费在线观看 https://www.xin3721.com/eschool/pythonxi…

Python爬虫入门教程15:音乐网站数据的爬取

基本开发环境&#x1f4a8; Python 3.6 Pycharm 相关模块的使用&#x1f4a8; import requests import os 安装Python并添加到环境变量&#xff0c;pip安装需要的相关模块即可。 一、&#x1f4a5;明确需求 爬取某音乐网站的排行榜歌曲。 二、&#x1f4a5;网页数据分析 1、…

建站记录2-CSS文件未加载-已解决-Resource interpreted as Stylesheet but transferred with MIME type text/plain

在本地加载正常&#xff0c;上传到服务器之后&#xff0c;网页没有样式。 解决问题的过程&#xff1a; 是否路径问题&#xff1f; —>分析&#xff1a;应该不是路径问题。页面中引用了图片&#xff0c;路径格式与CSS文件相同&#xff0c;图片可以正确加载。 —>操作–需…

快速把网站变成纯灰度显示,filter的使用

在html标签加上 <style>html {filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale1);-webkit-filter: grayscale(100%);} </style>filter https://developer.mozilla.org/zh-CN/docs/Web/CSS/filter filter CSS属性将模糊或颜色偏移等图形效果应用…

C# 关于爬取网站数据遇到csrf-token的分析与解决

需求 某航空公司物流单信息查询&#xff0c;是一个post请求。通过后台模拟POST HTTP请求发现无法获取页面数据&#xff0c;通过查看航空公司网站后&#xff0c;发现网站使用避免CSRF攻击机制&#xff0c;直接发挥40X错误。 关于CSRF 读者自行百度 网站HTTP请求分析 Headers …

随机切换必应美图html代码,随机显示必应每日一张图片为背景网站技巧教程

摘要&#xff1a; 主题有好多模板设置了分类的背景图&#xff0c;调用了第三方api但是最近第三方挂了&#xff0c;嗯嗯&#xff0c;这就是图省事不写代码的后果&#xff0c;一旦图片都失效&#xff0c;网站打开速度慢不说&#xff0c;图片的背景图还是灰蒙蒙一片&#xff0c;非…

C# 关于爬取网站数据遇到csrf-token的分析与解决

需求 某航空公司物流单信息查询&#xff0c;是一个post请求。通过后台模拟POST HTTP请求发现无法获取页面数据&#xff0c;通过查看航空公司网站后&#xff0c;发现网站使用避免CSRF攻击机制&#xff0c;直接发挥40X错误。 关于CSRF 读者自行百度 网站HTTP请求分析 Headers F…

java爬虫项目_「java爬虫」Java爬虫项目环境搭建 - seo实验室

java爬虫Github clone项目、创建分支下载Github for windows桌面客户端把master主分支clone到本地先把master主分支clone到本地 客户端界面操作&#xff1a; File-Clone repository 选中要clone的项目创建自己的分支 客户端界面操作&#xff1a;Branch-New branch 基于master创…

解决ASP网站HTTP 错误 500.19:httpErrors 节中不允许绝对物理路径

工作需要&#xff0c;需要vb.net教程维护一个asp的网站&#xff0c;网站十多年了&#xff0c;代码已经很难理清。Asp技术就不用多说了&#xff0c;二十多年前的技术&#xff0c;现在vs都已经不支持c#教程此种类型的项目。维护起来十分头疼&#xff0c;将来要写个东西替代它&…

.php容易收录吗,Wordpress容易被收录吗(Wordpress网站快速收录解决方法)

WordPress是使用PHP语言开发的博客CMS系统&#xff0c;有人问用WordPress做网站容易被收录吗?文章收录慢、不收录问题&#xff0c;小编整理了解决方法&#xff0c;让你的Wordpress网站快速被百度收录。百度作为最大的中文搜索引擎&#xff0c;现在推出了“快速收录”&#xff…

采购网站服务器的请示,关于采购云服务器的请示

关于采购云服务器的请示 内容精选换一换本文档主要介绍两种扩容场景&#xff0c;分别为扩容云服务器和扩容云硬盘。在“确认配置”页面&#xff0c;查看云服务器配置详情。如果您对价格有疑问&#xff0c;可以单击“了解计费详情”来了解产品价格。如果您对价格有疑问&#xff…

社交网站后端项目开发日记(二)

本项目vb.net教程目标是开发一个社区网c#教程站&#xff0c;拥python基础教程有发帖、讨论、搜索、登录等一个java基础教程正常社区拥有sql教程的功能。涉及到的版本参数为&#xff1a; JDK1.8Maven3.8.1&#xff08;直接集成到IDEA&#xff09;Springboot 2.5.1tomcat 9.0.45M…

编写一个520表白网站并发布Web教程

今天是2019年5月18日&#xff0c;还有两天就是2019-5-20了&#xff0c;本人也刚刚从JavaSe开始学&#xff0c;所以一时兴起就这了这个网站&#xff0c;主要的目的是给我媳妇儿表白&#xff0c;因为她总是给我说&#xff0c;“我们都不知道怎么在一起的迷迷糊糊的&#xff0c;还…

使用IIS发布网站

1.控制面板——>查看方式&#xff1a;小图标——>管理工具 2.点击IIS信息服务管理器 3.右键网站&#xff0c;发布网站 4.完成信息 此时&#xff0c;已经可以浏览网站&#xff0c;在浏览器输入localhost或点击浏览网站。 效果&#xff1a; 5&#xff0c;可以进一步编…

Python爬虫项目讲解:采集地方官方网站采购商品数据

前言 今天, 带大家采集地方官方网站的商品数据&#xff0c;其实这些公开的商品数据就是展示给用户看的&#xff0c;只不过我们通过爬虫采集下来可以更加方便我们看数据, 以及方便后续对数据做分析。 一起来看看吧! 本篇文章代码内容&#xff1a; 分析网页性质, 找数据请求的…

中文语音朗读网站

预览地址&#xff1a;https://yubin.applinzi.com 预览图片&#xff1a; 详细代码&#xff1a; <!DOCTYPE html> <html> <head><title>myweb</title><style>html{height: 100%;background:url(https://cdn.nlark.com/yuque/0/2019/jpeg/…

阿里云5m带宽能支持多少人访问_网站建立和运营一年大约要多少钱?

基于个人网站和企业网站&#xff0c;功能需求的简单化和复杂程度&#xff0c;所以这块的支出大致不同。一般的网站运营网站收费是包含网站建站和站&#xff0c;每年续费的费用的&#xff0c;以第一年为例&#xff0c;说一下基本的费用构成。1. 域名费用&#xff1a;看什么样的后…

用Python实现在网站上自动评论!键盘侠都喷不赢你!

自从上次在B站看到一个喷子&#xff0c;一个人喷一堆人&#xff0c;当时我就看不过去了&#xff0c;直接用Python写了个自动评论软件&#xff0c;他说一句我能说十句&#xff0c;当场教育喷子~ 于是乎&#xff0c;顺便整理一下&#xff0c;做了一手教程&#xff0c;分享给大家&…

网不好,看个漫画加载半天?教你用Python批量下载网站所有漫画(附源码和视频教程)

首先咱们用的是这些环境 Python3.6 pycharm 涉及到的知识点 requests parsel pip install 模块名 re os 大概流程 一、单章节爬取 找到受害者 https://www.kuimh.com/chapter/332265-3351141向受害者发送请求获取数据&#xff1a;获取源代码解析网页源代码: 提取漫画章节…

利用云函数+Python实现每日网站自动签到并用QQ提醒

利用云函数和Python实现蘑菇丁软件每日自动登录签到 由于怕token失效所以写成了每一次打卡前都要登录获取token一次&#xff0c;经过测试多次登录并不会造成登录异常&#xff0c;账号封禁等影响 Python3.6.2版本 """当然在学习Python的道路上肯定会困难&#x…