爬虫阶段思考

内容:写这篇文章是因为最近帮同学改了很多的爬虫代码,感触良多。

我用豆瓣为例,并不是不会用别的,而是这个我个人感觉最经典。然后还会写我遇到的一些问题以及解决方法。

首先,我们得先知道怎样爬取。我用的scrapy框架爬取。

我对此图的理解就是:

从spiders中获得一个请求(REQUEST),通过引擎传递给调度器,之后再返回给引擎,引擎把url封装好后传递给下载器,下载器将资源下载好后返回一个应答(RESPONSE),之后引擎将该应答发送给spiders,让其进行抓取,返回给引擎,然后解析出实体(Items)交给实体管道进行下一步操作。

ok,原理就是这样。下面来开始讲步骤。

pip install scrapy

首先要在虚拟环境中下载scrapy库,建议在网络好的环境里下载,最好在pycharm中配置镜像源。

scrapy

之后找到Teiminal 中输入这个库名,先进入这个库中,看看有哪些操作。

根据指示,开始建项目。

scrapy startprojrct pythonProject26

这里就建了一个项目。

cd projectProject26

返回上一级,我们会发现操作列表中有crawl,有了这个我们才可以进行网站爬取。

scrapy genspider db https://movie.douban.com/top250
scrapy crawl db

ok,目前为止,准备工作已经搞定。

接下来我们会看到它帮我们建立了这几个py文件:

 

然后我们需要在这个项目下建立一个调试文件,我记作main.py,

import os.path
import sys
from scrapy.cmdline import execute
currentFile = os.path.abspath(__file__)
currentPath = os.path.dirname(currentFile)
# print(currentPath)
sys.path.append(currentPath)
execute(["scrapy","crawl","db"])

这个是为了提取到这个项目的路径,让它可以贯穿整个项目(我是这样理解的)。

之后就是编写主程序。它自动给我们弄好了要爬取的域名,还有一个parse函数,只要前面的步骤没错的都应该是这样。

接下来我们先编辑settings.py文件,这个主要是取消对优先级的注释并改掉robots协议的遵循规则。 

接下来是db.py:

这是它自己创建出来的内容。接下来我继续编写。

先明确目标,我要爬取的是电影名字,导演,评分和简介。所以我采用了先总后分的方式,先提取总资源,再利用循环从中提取出想要的数据。

首先就是总数据:

接下来用循环取出数据:

之后我把它放在字典里:

之后为了让它一直爬取,用了一个生成器函数。

这只是一页的东西,现在多爬几页。

这个需要找每一页网址的规律。

然后就来到items.py:

接下来我把它保存在一个data1.txt里面。在pipelines.py:

我相信大家能看懂的,看不懂再说。

接下来就是连接数据库:

我搞的有点复杂,因为我刚开始不知道有另一种方法,所以我就记录我的方法了。

首先,在数据库里创建一个新表。

然后,我们需要在pycharm中下载一个库。

pip install mysql-connector-python

 然后就是连接数据库。

import mysql.connector# 连接到MySQL数据库
conn = mysql.connector.connect(host="your_host",user="your_username",password="your_password",database="my_database"
)# 创建一个游标对象
cursor = conn.cursor()# 打开文本文件
with open('your_data.txt', 'r') as file:for line in file:# 去除换行符title = line.strip()# 插入数据sql = "INSERT INTO my_table (title) VALUES (%s)"cursor.execute(sql, (title,))# 提交事务
conn.commit()# 关闭游标和连接
cursor.close()
conn.close()

里面的host,port,user,password,database,这些东西都要自己改。


ok,这就是完整的思路及代码。

我在帮别人改代码的过程中,发现了很多问题。首先就是网站选取。

我一直以为这个不是问题,但是终究是我认为,这不得找点有规律的网站吗?

其次就是数据提取,我用的是xpath ;

还有代码编写错误。

就不展开了,有问题欢迎来问我,这篇就这样了。

 

 

 

 

 

 

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

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

相关文章

2024广东省职业技能大赛云计算赛项实战——容器化部署MariaDB

容器化部署MariaDB 前言 今年比赛的容器化部署第一道考的好像就是这个,是往年国赛的题,直接给照搬过来了,今天就做做这道题: 编写Dockerfile构建镜像erp-mysql:v1.0,要求使用centos7.9.2009镜像作为基础镜像&#xf…

深入探讨Redis集群方案

一、什么是Redis集群 Redis集群(Redis Cluster)是Redis官方提供的分布式数据库解决方案,旨在通过将数据分散到多个节点上来实现水平扩展和高可用性。Redis集群提供了以下几个核心功能: 数据分片:将数据分布到多个节点…

Java变量命名规则

局部变量 使用驼峰命名以小写字母开头int myLocalVariable 实例变量(成员变量) 使用驼峰命名法小写字母开头myInstanceVariable 静态变量 使用驼峰命名法,以小写字母开头也可以使用大写蛇形命名法,全大写字母,单词…

护眼灯和普通台灯有什么区别?劣质护眼台灯宣传的三大套路

护眼灯和普通台灯有什么区别?围绕这一问题的讨论颇多。然而,真正体验过护眼台灯的人会深知,它与普通台灯之间的差异远非一般,涉及照明效果、色温调节、蓝光控制、闪烁问题及功能性设计等诸多层面。为了让更多人透彻理解这两者之间…

.locked勒索病毒详解 | 防御措施 | 恢复数据

引言 在数字化飞速发展的今天,我们享受着信息技术带来的便捷与高效,然而,网络安全问题也随之而来,且日益严重。其中,勒索病毒以其狡猾的传播方式和巨大的破坏性,成为了网络安全领域中的一大难题。.locked勒…

java实现多元预测(含代码)

1.多元预测介绍 多元预测(Multivariate Forecasting)是指使用多个变量或多个时间序列数据来预测未来的方法。与一元预测不同,多元预测考虑了多个因素对预测结果的影响,这些因素可以是同一时间序列的不同变量,也可以是来自不同数据源或不同领域的数据。 多元预测通常用于…

uniapp H5打开地图

manifest.json文件,源码视图找到H5添加下面内容 "h5" : {"sdkConfigs" : {"maps" : {"amap" : {"key" : "**********************","securityJsCode" : "****************************…

【Python】 使用 pandas 进行数据归一化

那年夏天我和你躲在 这一大片宁静的海 直到后来我们都还在 对这个世界充满期待 今年冬天你已经不在 我的心空出了一块 很高兴遇见你 让我终究明白 回忆比真实精彩 🎵 王心凌《那年夏天宁静的海》 数据归一化(Normalization&#xf…

OpenAI Sora:我们来自混乱,我们也将回归混乱

最近,我开始深入了解并整理一些关于Sora这个人工智能模型的系列文章。我的目标是从两个角度深入探讨:一是Sora的技术细节,包括它的原理和功能:OpenAI Sora:距离黑客帝国仅一步之遥,二是Sora的应用前景&…

c++课堂——基本知识(函数与表达式):第一讲

1.函数 在C语言中,函数是具有独立功能的一段程序,它由两部分组成:自变量(也数)和函数名。自变量可以是常量、变量或表达式;函数名要用标识符表示。通常使用函数就是调用函数名,并将原始数据代入…

孕妈妈如何高效备考PMP,纯经验分享

很惭愧从怀孕之前就报名PMP,一直处于备考,但是拖延症让我很难,在之前工作的时候,时间还算宽裕,所以基本都是边玩边学,直到现在PMP考试时间确定了才发现时间已经很紧迫了, 好在之前我报的班&…

Docker - Oracle Database Free

博文目录 文章目录 说明命令 说明 Oracle 镜像仓库 Docker 官方没有提供 Oracle Database 相关镜像, 但是 Oracle 官方有提供, 打开上面的链接, 选择 Database, 选择合适的版本, 如 enterprise, express 和 free, 这里以 free 为例. Free 分为 FULL 和 LITE 两个版本, 这里以 …

PPO代码理解

目录 # Finding the ratio (pi_theta / pi_theta__old): ratios torch.exp(logprobs - old_logprobs.detach()) advantages rewards - state_values.detach() surr1 ratios * advantages surr2 torch.clamp(ratios, 1-self.eps_clip, 1self.eps_clip) * advantages l…

【数据分析实战】—预测宠物收养状况数据分析

文章目录 数据集数据集描述特征用途注意 宠物收养预测环境准备探索数据帧数据预处理机器学习数据预处理:模型培训和评估:合奏学习: 添加底部名片获取数据集吧! 数据集 数据集描述 宠物收养数据集提供了对各种因素的全面调查&…

企微私域运营中的四大内容运营模块深度解析

在当前的数字营销时代,企业微信(企微)私域流量运营已成为企业获取用户、建立品牌、提升转化的重要手段。而在企微私域运营中,内容运营作为核心环节,其重要性不言而喻。本文将详细解析企微私域运营中的四大内容运营模块…

ES6新增语法

1、ECMA Ecma国际(Ecma International)是一家国际性会员制度的信息和电信标准组织。1994年之前,名为欧洲计算机制造商协会(European Computer Manufacturers Association) 2、ECMAScript ECMAScript 6(简…

【Linux】UNIX体系结构分解——操作系统,内核,shell

1.什么是操作系统? 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。我们通常将这种软件称为内核(kerel),因为它相对较小,而且位于环境的核心。 从广义上…

前端开发接单公司做到哪些点,客户才愿意把项目包给你。

作为前端外包接单公司,你知道客户选择和你合作都看中哪些因素吗?单纯是价格吗?未必,本位给大家列举7个要素,并对每个要素做了定位,大家查缺补漏吧。 作为前端外包接单公司,要吸引同行客户将前端…

【初阶数据结构】深入解析栈:探索底层逻辑

🔥引言 本篇将深入解析栈:探索底层逻辑,理解底层是如何实现并了解该接口实现的优缺点,以便于我们在编写程序灵活地使用该数据结构。 🌈个人主页:是店小二呀 🌈C语言笔记专栏:C语言笔记 &#x1…

【Altium】打开原理图是空白的解决方法

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 打开画完的原理图,报错提示并且图纸为空白的解决方法 2、 问题场景 收到其他人画好的原理图,打开后提示报错:Load file error:值对于无符号的字节太大或太小。并且原理图显示为空…