c 抓取网页数据(scrapy实验总结(一):安装Scrapy实验的收获与思考)
优采云 发布时间: 2021-11-20 07:04c 抓取网页数据(scrapy实验总结(一):安装Scrapy实验的收获与思考)
实验性一、scrapy crawler一、 实验目的
1、 用于数据捕获的网络爬虫。
2、如何使用scrapy,可以使用scrapy抓取网页数据。
二、能力地图
三、实验内容
1.内容:爬取传知播客C/C++讲师的姓名、职称和简介。
2.目标网址:
3.软件:scrapy框架的pycharm软件已经安装成功(专业版和社区版都可以)。
4.python3.7 及以上。
5.使用scrapy框架实现爬虫,使用xpath解析方式。
四、实验过程1、pycharm的卸载与安装
之前在笔记本电脑上安装了专业版的pycharm,现在激活码过期了,网上也找不到免费的激活码。同时,我之前安装的pycharm版本不是最新的,所以选择卸载重装。
关于卸载:
有了之前重装软件冲突的经验,为了防止重装最新社区版pycharm时发生冲突,应该把pycharm卸载干净。网上找到了相关的卸载方法:pycharm uninstall
关于安装:
为了避免安装软件后由于安装方式出现一些错误,我还找了一个相关教程:pycharm安装教程
2、scrapy 安装
按照老师的讲授完成安装,结果如下:
3、创建一个scrapy项目
这里直接进入scrapy的路径,在命令行运行cmd创建,如下图:
创建完成后,使用pycharm打开项目,如图:
4、创建一个写爬虫的文件
7
5、写代码5.1 itcast.py
import scrapy
#导入容器
from ITcast.items import ItcastItem
class ItcastSpider(scrapy.Spider):
# 爬虫名 启动爬虫时需要的参数*必需
name = 'itcast'
# 爬取域范围 允许爬虫在这个域名下进行爬取(可选) 可以不写
allowed_domains = ['itcast.cn']
#起始url列表 爬虫的第一批请求,将求这个列表里获取
start_urls = ['http://www.itcast.cn/channel/teacher.shtml']
def parse(self, response):
node_list = response.xpath("//div[@class='li_txt']")
for node in node_list:
#创建item字段对象,用来存储信息
item = ItcastItem()
# .extract() 将xpath对象转换围殴Unicode字符串
name = node.xpath("./h3/text()").extract()
title = node.xpath("./h4/text()").extract()
info = node.xpath("./p/text()").extract()
item['name'] = name[0]
item['title'] = title[0]
item['info'] = info[0]
#返回提取到的每一个item数据 给管道文件处理,同时还会回来继续执行后面的代码
yield item
5.2 项.py
import scrapy
class ItcastItem(scrapy.Item):
# 与itcast.py 定义的一一对应
name = scrapy.Field()
title = scrapy.Field()
info = scrapy.Field()
#pass
5.3 settings.py
取消对下图的注释并将其更改为100
ITEM_PIPELINES = {
'ITcast.pipelines.ItcastPipeline': 100, #值越小优先级越高
5.4 管道.py
import json
class ItcastPipeline(object):
def __init__(self):
#python3保存文件 必须需要'wb' 保存为json格式
self.f = open("itcast_pipeline.json",'wb')
def process_item(self, item, spider):
#读取item中的数据 并换行处理
content = json.dumps(dict(item),ensure_ascii=False) + ',\n'
self.f.write(content.encode('utf=8'))
return item
def close_spider(self,spider):
#关闭文件
self.f.close()
显示结果:
五、实验总结(写下这个实验的结果,遇到的问题等,这一项很重要,是实验的总结和思考)遇到的问题1安装Scrapy报错
解决方案:将 python3.8 替换为 3.7
因为一台电脑可以有多个python,我这里直接安装了一个python3.7
python安装教程
问题2 在Terminal中执行Scrapy命令报错
解决方法:使用绝对路径(本实验在Terminal中执行的所有scrapy命令都是绝对路径),成功解决了第一种使用Pycharm命令行终端无法识别的命令的方法!
报酬
通过这个实验,我学会了pycharm+scrapy爬取数据,也学会了遇到问题时如何在网上寻找合适的解决方案。