Scrapy 实战 ——爬取新闻-用scrapy爬取新闻

520次阅读
没有评论

 

01

新建项目

 

  •  

# 新建项目的命令# 1. 在目标目录下启动控制台# 2. 然后,在命令行里面输入如下命令:# scrapy startproject 项目名称# 那这里的项目名称就设为:news
# 最终输入:scrapy startproject news

如下:

Scrapy

 


 

02

创建 Spider

注意:
  • 这里创建的 Spider 名称不能与项目名称相同,否则会报错!!!

    •  

    # 在项目根目录运行命令行命令(注意是否已经cd news进入到项目根目录):# scrapy genspider 蜘蛛名称 要爬取的域名# 这里我们创建一个项目名称为:news163# 爬取的域名是:news.163.com# 注意:# 1. 这里的域名前面不要加 协议:https:// 或者添加 www# 2. Scrapy 生成 Spider 的时候会自动添加
    # 最终输入:scrapy genspider news news.163.com
    # 扩展scrapy genspider -t crawl news news.163.com

    如下:

    Scrapy

     

    Scrapy

     

    <<  滑动查看下一张图片  >>

    ScrapyScrapyScrapy

     

    实际文件夹文件图片:

    more+

     

     

    03

    进入创建的 Spider >>> news163.py

     

     

    如图:

    Scrapy

     

     

    解析每一部分的内容:

  • import scrapy # 导入 scrapy 库

  • class News163Spider(Scrapy.Spider):        # 这是一个类,然后这个类继承于 Scrapy 这个父类

    • name :爬虫的名字叫 news163

    • allowed_domains = [‘news.163.com’]      #  这个是设置这个爬虫允许爬取的域名,如果初始或后续的请求不是在这个域名下的,则请求链接会被过滤掉

    • start_urls = [‘http://news.163.com/‘]

    • parse :start_urls 第一个传下来的参数默认先运行 parse 函数。之后我们自己定义类似 parse 函数的话,也要做出区分,例如:parse1、parse2 之类的;

    • 这里我觉得还是用之前推文的图片能让大家更好的理解:

  •  

  • Scrapy

     


     

    04

    扩展-Xpath

     

    Scrapy

    1.XPath 定义
    – 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上。

    因此,对 XPath 的理解是很多高级 XML 应用的基础。

     

    Scrapy

    3.选取节点

    05

    items.py

     

    之前我们已经编写了 items.py 请记住这部分, 这 是我们对于每个网页爬取的信息要获得的属性

    Scrapy

     

    06

    spiders.py

     

    导入库:

    Scrapy

     

    解析:

  • import scrapy :导入这个 Scrapy 框架

  • from scrapy.linkextractors import LinkExtractor   :链接提取器(提取链接)

  • from scrapy.spiders import CrawlSpider, Rule       :其中  CrawlSpider  是  Spider  的派生类,具有更多的方法和功能;   Rule   表示的是爬取的规则。

  • from news.items import NewsItem               :   导入刚刚我们编写的 Items.py

  • 扩展:

    • LinkExtractor是从网页(scrapy.http.Response)中抽取会被follow的链接的对象。

    • LinkExtractor在CrawlSpider类(在Scrapy可用)中使用, 通过一套规则,但你也可以用它在你的Spide中,即使你不是从CrawlSpider继承的子类, 因为它的目的很简单: 提取链接。

    • rules  (元组( Tuple )类的数据类型)

    • parse_start_url(response)

    • 当start_url的请求返回时,该方法被调用。该方法分析最初的返回值并必须返回一个Item对象或一个Request对象或者一个可迭代的包含二者的对象

    • 当编写爬虫规则时,请避免使用parse 作为回调函数。由于CrawlSpider使用parse 方法来实现其逻辑,如果 您覆盖了parse 方法,CrawlSpider将会运行失败。

    • 包含一个或多个Rule对象的集合。每个Rule对爬取网站的动作定义了特定规则。Rule对象会在下面介绍。

    • CrawlSpider也提供了一个可复写的方法:

    • CrawlSpider 是  Spider  的派生类,  Spider  类的设计原则是只爬取start_urls中的url,而CrawlSpider类定义了一些规则(rules)来提供跟进链接(link)的方便机制,从爬取的网页中获取link并继续爬取的工作更适合。

    • CralwSpider

    • LinkExtractor

    注意:

    1. 我们的类 ExampleSpider一定要继承自CrawlSpider

    2.  callback 不要用 parse !  把自动生成的 parse 删掉


     

     

     

    •  

     

     

    Scrapy

     

     

     

     

     

    神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

    相关文章:

    版权声明:Python教程2022-11-01发表,共计1978字。
    新手QQ群:570568346,欢迎进群讨论 Python51学习