您的位置:首页 > 房产 > 家装 > 百度推广最简单方法_畅销营销型网站建设电话_东莞做网站哪个公司好_黄山网站建设

百度推广最简单方法_畅销营销型网站建设电话_东莞做网站哪个公司好_黄山网站建设

2025/3/4 21:26:51 来源:https://blog.csdn.net/jayhgq/article/details/145709061  浏览:    关键词:百度推广最简单方法_畅销营销型网站建设电话_东莞做网站哪个公司好_黄山网站建设
百度推广最简单方法_畅销营销型网站建设电话_东莞做网站哪个公司好_黄山网站建设

文章目录

  • Scrapy目录结构
  • 第一个爬虫
  • 运行爬虫
  • 必要说明
    • start_requests()和start_urls
    • 如何关闭allowed_domains的限制

通过前几节的学习,我们已经了解了Scrapy的基本操作,下面我们开始第一个项目,我以本人的 网址为例进行爬虫讲解,之所以用我自己的网站,是因为我这个网站本来就是做知识分享用的,共大家学习,不会去限制爬取,现在很多网站为了防止爬虫,都会做很多限制策略,不适合新手练习,本人就提供这样一个练习平台给大家。当然维护网站不易,如果你学到了知识,也请给作者一杯咖啡的钱谢谢🙏。
注:本教程的所有代码均在windows上完成的,其他系统文件路径或系统相关命令可以会有区别。

Scrapy目录结构

我们先回过头,再看下Scrapy目录结构,这次要说明的就不是根目录和项目目录的作用了,而是要对每个文件及目录进行下说明,开始编写我们的第一个爬虫。
首先使用命令创建爬虫项目,我的网站主要是做知识内容分享的,所以项目名称就叫KnowledgeSharing,使用命令创建如下

scrapy startproject KnowledgeSharing

爬取的网页就是首页,我们爬虫名就叫shouye,使用命令创建如下

cd KnowledgeSharing
scrapy genspider shouye www.jayhgq.cn

执行以上命令后,我们会得到以下目录,我在每个文件后面加了注释,解释这个文件的作用。

├─KnowledgeSharing  # 项目目录,即我说的根目录
│  │  scrapy.cfg  # 项目的主要配置信息,部署时从这个文件中查询配置
│  │
│  └─KnowledgeSharing  # 爬虫程序目录
│      │  items.py  # 数据存储模版文件,用于结构化数据
│      │  middlewares.py  # 中间件文件,用于编写爬虫中间件和下载器中间件
│      │  pipelines.py  # 数据处理文件,一般用来存储结构化后的数据
│      │  settings.py  # 配置文件,如设置请求头、递归层数等等,所有选项必须大写,否则无效
│      │  __init__.py  # 初始化文件,和python的__init__.py文件一样,用于将目录标记为包和包的初始化
│      │
│      ├─spiders  # 爬虫代码文件夹
│      │  │  shouye.py  # 刚刚创建的爬虫代码文件,用来编写爬虫规则
│      │  │  __init__.py  # 初始化文件

第一个爬虫

知道了Scrapy的目录结构,我们可以动手开始做我们的第一个爬虫了,从目录结构中能看到,爬虫规则是写在spiders文件夹下的爬虫代码文件中,刚创建的第一个爬虫代码文件叫shouye.py,我们打开这个文件,可以看到以下内容,同样我为代码加上了注释,一定要仔细看注释,不然后面可能有些内容会不清楚。

import scrapy  # 导入scrapy包# 爬虫类,类名一般是name+Spider,必须是Spider的子类,即需要继承Spider才能被Scrapy识别
class ShouyeSpider(scrapy.Spider):# 爬虫名称name,一个项目中名称需要保持唯一name = "shouye"# allowed_domains允许访问的域名列表,默认开启,只允许爬取该列表下的页面,可在settings.py的中间件中部分关闭allowed_domains = ["www.jayhgq.cn"]# 第一个请求的地址默认从start_urls中获取start_urls = ["https://www.jayhgq.cn"]# 默认回调函数parse,用来处理请求的响应response,可以在这里进行数据提取def parse(self, response):pass

以上是用scrapy的genspider命令自动生成的,但是这样我们执行什么都存储不下来,我们来做下简单的改动,如下

# 导入pathlib来处理文件路径等问题
from

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com