IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 基于Scrapy构架的爬虫之问题一:我的第一个代码 -> 正文阅读

[Python知识库]基于Scrapy构架的爬虫之问题一:我的第一个代码

“难过难过 ,难着难着就过去了”

作为一个爬虫初学者来说,这是我第一个能看懂,并且困扰我三四天的代码。

我的爬虫时基于Scrapy构架的,爬取24小时热销榜小说的代码,需要爬取到的信息包括小说名称、作者、类型、形式(连载或者完结)并将其保存到CSV文件中,因为这个爬虫简单,只涉及到了HotSalesSpider类,其所有功能都在其上实现;除此之外还用到了parse()函数,下面进行依次介绍:

(1)HotSalesSpider类:其基类为Spider,类中定义了两个属性,name和start_urls,name为爬虫名;start_urls用来存储目标网址列表。

(2)parse()函数是爬虫方法的核心,需要完成两个主要任务:

  • 提取页面的数据
  • 提取页面的链接,并对页面链接产生下载请求

首先在cmd中建立项目,具体命令为:

?>d

>cd d:\Python? ? (注意:Python为项目所在的文件夹)

>scrapy startproject Python? ? (注意第一次使用cmd创建爬虫项目时,项目的名称要与放置项目文件夹的名称相同,必须为英文,下一次就可以任意了。)

项目创建完成后会在所在文件夹产生相应的配置文件,如下图:

之后在Spider文件下创建新的.py代码,具体代码如下:

from scrapy import Request
from scrapy.spiders import Spider
class HotSalesSpider(Spider): ?#类HotSalesSpider,基于Spider
? ? #定义爬虫名称
? ? name = 'hot'
? ? #起始的URL列表
? ? #qidian_headers = {"User-Agent":Mozilla/"
? ? ?## ? ? ? ? ? ? ? ? "5.0 (Windows NT 10.0;"
? ? ? ?# ? ? ? ? ? ? ? "WOW64) AppleWebKit/"
? ? ? ? # ? ? ? ? ? ? ?"537.36 (KHTML, like Gecko) Chrome/"
? ? ? ? ?# ? ? ? ? ? ? "91.0.4472.164 Safari/"
? ? ? ? ? # ? ? ? ? ? ?"537.36"}
? ? #def start_requests(self):
? ? ?# ? ur1 = "https://www.qidian.com/rank/hotsales?style=1"
? ? ? # ?yield Request(ur1,headers=self.qidian_headers,callback=self.qidian_parse)
? ? start_urls = ["https://www.qidian.com/rank/hotsales?style=1"]
? ? #解析函数
? ? def parse(self, response): ?#定义方法parse()解析函数,提取页面数据、链接并对链接页面的下载请求
? ? ? ? #使用xpath定位到小说内容的div元素
? ? ? ? list_selector = response.xpath("//div[@class='book-mid-info']")
? ? ? ? #list_selecter是一个选择器对象列表,存储有多个选择器对象,一个选择器对应一个div元素
? ? ? ? #依次读取每部小说的元素,从中获取名称、作者、类型和形式
? ? ? ? for one_selector in list_selector:
? ? ? ? ? ? #获取小说名称
? ? ? ? ? ? name = one_selector.xpath("h4/a/text()").extract()[0]
? ? ? ? ? ? #获取作者 ,extract()[0]为提取提取xpath()或css()返回的SelectorList对象中文本数据,返回unicode字符串列表
? ? ? ? ? ? author = one_selector.xpath("p[1]/a[1]/text()").extract()[0]
? ? ? ? ? ? #获取类型
? ? ? ? ? ? type = one_selector.xpath("p[1]/a[2]/text()").extract()[0]
? ? ? ? ? ? #获取形式(连载/完本)
? ? ? ? ? ? form = one_selector.xpath("p[1]/span/text()").extract()[0]
? ? ? ? ? ? #将爬取到的一部小说保存到字典中
? ? ? ? ? ? hot_dict = {"name":name, ? #小说名称
? ? ? ? ? ? ? ? ? ? ?"author":author, ?#作者
? ? ? ? ? ? ? ? ? ? ?"type":type, ? ? ?#类型
? ? ? ? ? ? ? ? ? ? ?"form":form} ? ? ?#形式
? ? ? ? ? ?# print(hot_dict)
? ? ? ? ? ? #使用yield返回字典
? ? ? ? ? ? yield hot_dict

?要注意!要注意!要注意!

配置setting.py文件

ITEM_PIPELINES = {
? ? #'Python.pipelines.CsvItemExporterPipeline': 1,
? ? 'Python.pipelines.PythonPipeline': 300,
}

把项目管道打开,还要具体的一些环境配置,大家可以搜索一下。

完成之后,就是运行项目,其中项目运行有两种方式,具体如下:

(1)在cmd中运行,具体命令如下:

>d:

>cd D:\Pychon\Python

>scrapy crawl hot(爬虫名) -o hot.csv(保存在hot.csv文件里)?

(2) 在项目文件下重新创建一个start.py文件,直接在运行环境中执行,代码如下:

# -*- coding: utf-8 -*-

from scrapy import cmdline
#导入cmd命令窗口
cmdline.execute("scrapy crawl hot -o hot.csv" .split())
#运行爬虫并生产csv文件

结果如下:


到代码运行成功为止,我已经被折磨了好多天,下面是在代码运行成功之前报出的错误:

?从此,就开启了我的找错之路:


找错一:setting.py的管道配置,上面已经说过了,但是仍然么有解决

找错二:网页分析问题,我也改过,但是还是不行

找错三:运行环境问题,我找了师兄帮我运行,结果!结果他在pycharm中,安装了scrapy库之后运行出来了,那一刻,我喜出望外,手舞足蹈,哈哈大笑。因为我是在Spyder上运行的,于是回去重新安装了anaconda9.7,安装了pycharm,但是但是,还是同样的错误!!!!!!!!

那么我的问题到底出在哪了???

最终错误:!!!!!

直到今天,我又把list_selector = response.xpath("//div[@class='book-mid-info']")代码重新敲了一遍,终于过了!!!

因为提示错误中说我的路径语句不合法,我一直没注意到,据我分析,应该是“//”用中文打出来的所以才导致一直爬不出来。

第一次学爬虫,有什么不足之处还望各位大神多多指正。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:26:19  更:2021-11-09 19:28:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:35:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码