爬虫框架Scrapy从创建到使用

scrapy框架安装命令

1.需要安装python

链接: link

2.scrapy安装命令
python -m pip install Scrapy
3. 创建爬虫项目
scrapy startproject 项目名称
4.创建爬虫文件
scrapy genspider 爬虫名 域名
5.爬虫运行
scrapy crawl 爬虫名

scrapy 项目目录介绍

PaC  #项目文件名称PaC #项目目录items.py #定义数据结构middlewares.py #中间件pipelines.py #数据处理settings.py #全局配置spiderspac.py #爬虫文件scrapy.cfg #项目基本配置文件

settings.py 修改

# USER_AGENT = "PaMaoyan (+http://www.yourdomain.com)" 默认是注释掉的
# 写死 USER_AGENT = "Mozilla/5.0"
修改后 USER_AGENT = "Mozilla/5.0"# ROBOTSTXT_OBEY = True 默认是True  ***必须开启***
# True 是遵守 ROBOTSTXT 协议
修改后 ROBOTSTXT_OBEY = False# 默认的最大并发量 默认16 不要设置太大
# CONCURRENT_REQUESTS = 32 默认是注释掉的
修改后 CONCURRENT_REQUESTS = 32# 控制爬取的速度
# DOWNLOAD_DELAY = 3 默认是注释掉的
修改后 DOWNLOAD_DELAY = 0.5# 请求头 ***必须开启***
# 可以添加 User-Agent
# DEFAULT_REQUEST_HEADERS = {
#   "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
#   "Accept-Language": "en",
#}
修改后:
DEFAULT_REQUEST_HEADERS = {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Accept-Language": "en",
}

简单试一下

1.example.py 文件中
import scrapyclass ExampleSpider(scrapy.Spider):# 爬虫名name = "baidu"# 允许爬取的域名allowed_domains = ["www.baidu.com"]# 起始的url地址start_urls = ["http://www.baidu.com"]def parse(self, response):item = response.xpath("/html/head/title/text()")print("*"*50)print(item)print("*" * 50)
2.PaC项目目录 平级 创建 运行文件 run.py
# 右键 运行 run.py
from scrapy import cmdline
cmdline.execute("scrapy crawl baidu".split())
成功运行
2024-03-27 17:03:52 [scrapy.utils.log] INFO: Scrapy 2.11.1 started (bot: PaMaoyan)
2024-03-27 17:03:52 [scrapy.utils.log] INFO: Versions: lxml 5.1.0.0, libxml2 2.10.3, cssselect 1.2.0, parsel 1.9.0, w3lib 2.1.2, Twisted 24.3.0, Python 3.12.2 (tags/v3.12.2:6abddd9, Feb  6 2024, 21:26:36) [MSC v.1937 64 bit (AMD64)], pyOpenSSL 24.1.0 (OpenSSL 3.2.1 30 Jan 2024), cryptography 42.0.5, Platform Windows-11-10.0.22631-SP0
2024-03-27 17:03:52 [scrapy.addons] INFO: Enabled addons:
[]
2024-03-27 17:03:52 [asyncio] DEBUG: Using selector: SelectSelector
2024-03-27 17:03:52 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.asyncioreactor.AsyncioSelectorReactor
2024-03-27 17:03:52 [scrapy.utils.log] DEBUG: Using asyncio event loop: asyncio.windows_events._WindowsSelectorEventLoop
2024-03-27 17:03:52 [scrapy.extensions.telnet] INFO: Telnet Password: addd51de00c6d2f6
2024-03-27 17:03:52 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.corestats.CoreStats','scrapy.extensions.telnet.TelnetConsole','scrapy.extensions.logstats.LogStats']
2024-03-27 17:03:52 [scrapy.crawler] INFO: Overridden settings:
{'BOT_NAME': 'PaMaoyan','CONCURRENT_REQUESTS': 32,'DOWNLOAD_DELAY': 3,'FEED_EXPORT_ENCODING': 'utf-8','NEWSPIDER_MODULE': 'PaMaoyan.spiders','REQUEST_FINGERPRINTER_IMPLEMENTATION': '2.7','SPIDER_MODULES': ['PaMaoyan.spiders'],'TWISTED_REACTOR': 'twisted.internet.asyncioreactor.AsyncioSelectorReactor'}
2024-03-27 17:03:52 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware','scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware','scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware','scrapy.downloadermiddlewares.useragent.UserAgentMiddleware','scrapy.downloadermiddlewares.retry.RetryMiddleware','scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware','scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware','scrapy.downloadermiddlewares.redirect.RedirectMiddleware','scrapy.downloadermiddlewares.cookies.CookiesMiddleware','scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware','scrapy.downloadermiddlewares.stats.DownloaderStats']
2024-03-27 17:03:52 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware','scrapy.spidermiddlewares.offsite.OffsiteMiddleware','scrapy.spidermiddlewares.referer.RefererMiddleware','scrapy.spidermiddlewares.urllength.UrlLengthMiddleware','scrapy.spidermiddlewares.depth.DepthMiddleware']
2024-03-27 17:03:52 [scrapy.middleware] INFO: Enabled item pipelines:
[]
2024-03-27 17:03:52 [scrapy.core.engine] INFO: Spider opened
2024-03-27 17:03:52 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2024-03-27 17:03:52 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023
2024-03-27 17:03:52 [urllib3.connectionpool] DEBUG: Starting new HTTPS connection (1): publicsuffix.org:443
2024-03-27 17:03:53 [urllib3.connectionpool] DEBUG: https://publicsuffix.org:443 "GET /list/public_suffix_list.dat HTTP/1.1" 200 85074
2024-03-27 17:03:53 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://www.baidu.com> (referer: None)
2024-03-27 17:03:54 [scrapy.core.engine] INFO: Closing spider (finished)
2024-03-27 17:03:54 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 190,'downloader/request_count': 1,'downloader/request_method_count/GET': 1,'downloader/response_bytes': 103543,'downloader/response_count': 1,'downloader/response_status_count/200': 1,'elapsed_time_seconds': 1.251639,'finish_reason': 'finished','finish_time': datetime.datetime(2024, 3, 27, 9, 3, 54, 80375, tzinfo=datetime.timezone.utc),'httpcompression/response_bytes': 405401,'httpcompression/response_count': 1,'log_count/DEBUG': 6,'log_count/INFO': 10,'response_received_count': 1,'scheduler/dequeued': 1,'scheduler/dequeued/memory': 1,'scheduler/enqueued': 1,'scheduler/enqueued/memory': 1,'start_time': datetime.datetime(2024, 3, 27, 9, 3, 52, 828736, tzinfo=datetime.timezone.utc)}
2024-03-27 17:03:54 [scrapy.core.engine] INFO: Spider closed (finished)
**************************************************
[<Selector query='/html/head/title/text()' data='百度一下,你就知道'>]
**************************************************

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

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

相关文章

Canvas实现圆点动画

示例效果图&#xff1a; 话不多说直接上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><t…

Unity类银河恶魔城学习记录11-10 p112 Items drop源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili ItemObject_Trigger.cs using System.Collections; using System.Collecti…

P28—P31:变量

P28-变量的定义 什么是变量&#xff1f; 从本质上来说&#xff0c;变量就是一块内存空间&#xff0c;而这块内存空间有数据类型、名字、字面值。变量包含三部分&#xff1a;数据类型、名字、字面值&#xff08;数据&#xff09;变量是内存中存储的基本单元。 数据类型的作用&a…

Linux 查看磁盘信息:df与du命令详解

一、df 1.简介 df 是 disk free的缩写&#xff0c;从UNIX和类UNIX操作系统的早期开始&#xff0c;它就是UNIX和类UNIX操作系统的一部分。它被设计为一种工具&#xff0c;用于监视系统上已使用和可用的磁盘空间数量。 df 命令主要用于需要检查文件系统上已使用和可用的磁盘空…

第十三届蓝桥杯JavaA组省赛真题 - GCD

解题思路&#xff1a; 找规律 最大的最小公因数就是两数的差值 5 7 gcd2 1 3 gcd2 1 4 gcd3 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);long a scan.nextLong();long b scan.ne…

查找--二分查找(Binary Search)

二分查找属于静态查找表&#xff0c;当以有序表表示静态查找表时&#xff0c;查找函数可用折半查找来实现。 查找过程&#xff1a;先确定待查记录所在的范围&#xff08;区间&#xff09;&#xff0c;然后逐步缩小范围直到找到或找不到该记录为止。 以处于区间中间位置记录的…

每日一题 --- 替换数字[卡码][Go]

替换数字 题目&#xff1a;54. 替换数字&#xff08;第八期模拟笔试&#xff09; (kamacoder.com) 题目描述 给定一个字符串 s&#xff0c;它包含小写字母和数字字符&#xff0c;请编写一个函数&#xff0c;将字符串中的字母字符保持不变&#xff0c;而将每个数字字符替换为…

Linux appimage如何正确打开

在之前的文章中&#xff0c;提到使用appimage软件非常方便。 但是首次使用会遇到这样的问题&#xff1a; 1. 双击打不开 2. 在终端打开提示&#xff1a; /home/roy/software/appimage/Obsidian-1.5.11.AppImage dlopen(): error loading libfuse.so.2 AppImages require …

【Pandas】(5)eval和query

使用 eval() 进行高效计算 eval() 函数在 Pandas 中是一种高效率的字符串表达式求值器,允许对 DataFrame 进行快速计算。这个功能基于 Numexpr 库,能够加速某些特定类型的操作,尤其是在处理大型 DataFrame 时。 基本使用 eval() 允许你使用字符串表达式来执行算术运算、比…

Python下载bing每日壁纸并实现win11 壁纸自动切换

前言: 爬虫哪家强,当然是python 我是属于啥语言都用,都懂点,不精通,实际工作中能能够顶上就可以。去年写的抓取bing每日的壁纸&#xff0c;保存到本地&#xff0c;并上传到阿里云oss&#xff0c;如果只是本地壁纸切换&#xff0c;存下来就行&#xff0c;一直想做个壁纸站点&…

内存可见性

内存可见性 一:内存可见性1.2: 二:解决内存可见性问题2.1 volatile关键字2.2:synchronized关键字解决内存可见性问题 一:内存可见性 public class Demo1 {public static int count 0;public static void main(String[] args) throws InterruptedException {Thread t1new Thre…

vuees6新语法

vue的学习网站&#xff1a; https://www.runoob.com/vue2/vue-tutorial.html1.Vue的介绍 学习目标 说出什么是Vue能够说出Vue的好处能够说出Vue的特点 内容讲解 【1】Vue介绍 1.vue属于一个前端框架&#xff0c;底层使用原生js编写的。主要用来进行前端和后台服务器之间的…

CubeIDE 下如何将版本号和日期关联。

1. 使用__DATE__ 和__TIME__获取编译日期和时间。 2. 将__DATE__ 和__TIME__转换成UINT 3. 将转换后的数赋值给版本号。 4. 设置工程保证每次都会重新编译对应文件。 对应函数如下&#xff1a; uint8_t VER_MAIN; uint8_t VER_SUB; uint8_t VER_MIN; #include <stdlib.…

我为什么愿意当韭菜

这几年&#xff0c;为了提升自己&#xff0c;我给无数的我认为优秀的人和课付过费。但我从来不认为自己有被割过韭菜。 如果非要说是韭菜&#xff0c;那我认为这个社会每个人都是韭菜&#xff0c;就看是甘愿被割&#xff0c;还是不甘愿。没办法&#xff0c;只有被割才能获得自己…

Python|OpenCV-实现检测人脸以及性别检测(12)

前言 本文是该专栏的第13篇,后面将持续分享OpenCV计算机视觉的干货知识,记得关注。 性别检测是计算机视觉领域里面的一个重要学习领域,简单的来说,它可以实现自动识别一张图片中的人物性别。为此在本文中,笔者将结合OpenCV和Tensorflow来实现对一张图进行“图片中的人物人…

链式前向星板子

对于树&#xff0c;有的时候邻接表可能扩容上慢。而我们可以确定是n-1条边&#xff0c;所以我们可以用“记录前驱节点”的链式的方式存到一起 ———— 链式前向星。 head代表点a在链式前向星nodes数组中,a链的首位于哪个位置。 a链的后继结点都可以通过next 来找到 &#xff…

PTA L2-043 龙龙送外卖

龙龙是“饱了呀”外卖软件的注册骑手&#xff0c;负责送帕特小区的外卖。帕特小区的构造非常特别&#xff0c;都是双向道路且没有构成环 —— 你可以简单地认为小区的路构成了一棵树&#xff0c;根结点是外卖站&#xff0c;树上的结点就是要送餐的地址。 每到中午 12 点&#…

OSCP靶场--Access

OSCP靶场–Access 考点( 文件上传[黑名单apache.htaccess绕过] Kerberoasting SeManageVolume滥用提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.216.187 -sV -sC -Pn --min-rate 2500 -p- Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-3…

高端的电子画册,手机打开你见过吗?

手机阅读的高端电子画册&#xff0c;你见过吗&#xff1f;随着移动互联网的发展&#xff0c;越来越多的人选择在手机上阅读电子画册&#xff0c;而不是传统的纸质画册。这种趋势不仅节省了纸张资源&#xff0c;还提升了阅读体验。用户可以通过触摸屏幕、放大缩小、翻页等操作与…

腾讯研发部分编程题汇总做题笔记---Java

朋友圈(后端开发卷) 现在有 105 个用户&#xff0c;编号为 1- 105&#xff0c;现在已知有 m 对关系&#xff0c;每一对关系给你两个数 x 和 y &#xff0c;代表编号为 x 的用户和编号为 y 的用户是在一个圈子中&#xff0c;例如&#xff1a; A 和 B 在一个圈子中&#xff0c; B…