美文网首页
第三章 网站内容爬取之创建项目

第三章 网站内容爬取之创建项目

作者: 田同学的小迷妹儿 | 来源:发表于2018-08-27 20:57 被阅读13次

首先爬取一个网站前,我们需要分析网络的url结构,伯乐在线的网站结构是采用顶级域名下有二级域名,来区分每种类别的信息,并且在文章专栏里面,有一个http://web.jobbole.com/all-posts/是所有文章的总链接,在这个链接下,分页显示了所有的文章内容。

因此对于这种爬取内容有一个总链接的话,就不需要采用深度优先或者广度优先策略,只需要将这个总链接下的每一页的内容取出即可。说到每一页,查看url特点,发现就是在链接后面修改了页数,但是不能用这个方法,因为网站上文章数发生变化时,就必须要去修改源码。
如果是对每个分页上的写一页的链接进行跟踪,那么有多少页都无所谓了。

3.1 通过命令行创建pycharm scrapy项目步骤:

  1. 创建一个虚拟环境article_spider:mkvirtualenv article_spider
  2. 在这个虚拟环境内安装scrapy: pip install -i https://pypi.douban.com/simple/ scrapy
    注意安装的时候可能会报错,twisted找不到,那么就去https://www.lfd.uci.edu/~gohlke/pythonlibs/下载安装包,手动安装,安装的时候必须也是在这个虚拟环境内
  3. 建立scrapy项目,pycharm里面没有scrapy的工程,所以需要在命令行内手动安装
    进入pycharm工作目录cd d:\PycharmProjects
    进入虚拟环境workon article_spider
    创建scrapy项目专门爬取伯乐在线的文章scrapy startproject ArticleSpider,如下图,即为创建成功
  4. 在pycharm中打开刚创建的项目

3.2 pycharm项目工程文件的理解

scrapy.cfg: 类似于django的配置,它大量的借鉴了django的设计理念
settings.py: 包含了很多scrapy的配置,工程名字,spider_modules也指明了存放spiders的路径
pipelines.py: 做跟数据存储相关的
middlewares.py: 可以存放自己定义的middlewares,让scrapy变得更加可控
items.py: 有点类似于django里面的form,定义数据保存的格式
spiders文件夹:里面存放具体某个网站的爬虫,scrapy会去这个文件夹里面找有多少个爬虫文件,只需要在这里面继承了spiders,就会被scrapy找到

3.3 创建具体的spider方法

刚创建好项目的时候这个文件夹是空的,默认并没有创建网站爬取的模板,但是提供了命令,scrapy genspider example example.com,第三个词是spider的名称,后面是网站的域名。如图:

以上部分是关于scrapy虚拟环境的搭建,以及如何通过命令来新建一个scrapy工程。

在pycharm打开article_spider项目之后,需要导入之前创建的虚拟环境,即配置解释器。项目默认的是python3环境的python.exe,但是如果你创建了虚拟环境,虚拟环境的文件夹的scripts文件夹下也有python.exe。

3.4 启动spider的两种方法

  1. 启动一个spider的命令是scrapy crawl spider名称,运行命令尝试一下是否能正确启动jobbole这个spider,出现如下情况,解决好安装完成win32包之后就能正常启动了。启动sipder报错No module named "Win32api"解决办法如下“:
  1. 但是我们要在pycharm中完成爬虫,而不是每次都打开命令行,因此编写mian.py文件(放在主项目下),来调用spider命令。右键运行这个文件就可以啦。
# pycharm里面没有关于scrapy的模板,所以是没法直接调试的,需要自己手动编写一个main文件
# 在这个文件中调用命令行,就可以完成调试了

from scrapy.cmdline import execute
# 调用这个函数可以执行scrapy的脚本

import sys
import os

# print(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
# os.path.dirname(os.path.abspath(__file__)) 获取main文件路径的父目录
# os.path.abspath(__file__) 获取当前main文件的路径
# 需要设置工程的目录,必须在项目所在的目录下运行,再调用执行命令才会生效
# sys.path.append("D:\PycharmProjects\ArticleSpider") 如果路径设置死了,一旦项目位置发生变动,就需要改动很麻烦

execute(["scrapy","crawl","jobbole"])
# 调用execute()函数来执行spider命令,传入数组,即是执行启动spider的命令

# 一运行这个文件,如果在jobbole.py中parse()函数处设置断点,可以发现能够正常启动,并且返回了相关response变量
# 点开这个变量可以查看到,访问了某个网址,并且正常响应,也得到了body网页内容
# 下一步就是对其中的内容进行解析,获取想要爬取的内容啦。

相关文章

  • 第三章 网站内容爬取之创建项目

    首先爬取一个网站前,我们需要分析网络的url结构,伯乐在线的网站结构是采用顶级域名下有二级域名,来区分每种类别的信...

  • 爬虫框架scrapy篇二——创建一个scrapy项目

    1、创建scrapy项目 在开始爬取之前,我们首先要创建一个scrapy项目,在命令行输入以下命令即可创建 xxx...

  • Scrapy入门与实践(二) - helloworld

    创建项目 在开始爬取之前,必须创建一个新的Scrapy项目。 进入打算存储代码的目录中,运行下列命令: 该命令将会...

  • scrapy0.24 爬虫

    创建项目在开始爬取之前,您必须创建一个新的Scrapy项目。 进入您打算存储代码的目录中,运行下列命令: scra...

  • Scrapy

    创建项目 在开始爬取之前,您必须创建一个新的Scrapy项目。 进入您打算存储代码的目录中,运行下列命令:scra...

  • 行业垂直搜索引擎的构建

    1 项目的功能 爬取新闻(爬取网站可配置,精准爬取需要内容); 抽取新闻内容,存入数据库(精准抽取); 建立索引(...

  • Scrapy学习篇(三)之创建项目

    创建项目 创建项目是爬取内容的第一步,之前已经讲过,Scrapy通过scrapy startproject 命令...

  • Python爬虫----初窥Scrapy

    为什么要学习scrapy,简单来说就是让爬虫更快更强. 安装命令 在开始爬取之前,必须创建一个新的Scrapy项目...

  • CrawlSpider爬取某相亲网站数据

    CrawlSpider爬取某相亲网站数据,话不多说,直接上代码 首先创建项目:scrapy startprojec...

  • 1.初识scrapy框架

    scrapy框架的使用 1.创建爬虫项目 2.在爬虫文件中如何提取文本内容 3.实例 ,爬取美剧网站的电影 4.具体代码

网友评论

      本文标题:第三章 网站内容爬取之创建项目

      本文链接:https://www.haomeiwen.com/subject/dqtxwftx.html