c 抓取网页数据(scrapy实验总结(一):安装Scrapy实验的收获与思考)

优采云 发布时间: 2021-11-20 07:04

  c 抓取网页数据(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爬取数据,也学会了遇到问题时如何在网上寻找合适的解决方案。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线