学习笔记:网络机器人7.1Scrapy实战 ——爬取新闻

新建项目
scrapy startproject news
items.py
打开scrapy框架自动创建的items.py
items.py
修改items.py

import scrapy  # 导入scrapy模块

class NewsItem(scrapy.Item):   # 定义爬虫项目类
    # define the fields for your item here like:
    # name = scrapy.Field()
    news_thread = scrapy.Field()  # 新闻线索,独立的ID
    news_title = scrapy.Field()  # 新闻标题
    news_url = scrapy.Field()  # 新闻url
    news_time = scrapy.Field()  # 新闻时间
    news_source = scrapy.Field()  # 新闻来源
    source_url = scrapy.Field()  # 来源链接
    news_body = scrapy.Field()  # 新闻内容

定义spider
在项目根目录运行命令行命令(注意是否已经cd news进入到项目根目录):
scrapy genspider -t crawl news163 news.163.com
补充知识点:selectors选择器
支持xpath和css,其中css选择器之前的爬虫案例中介绍过了,这里是补充xpath的操作,xpath语法如下

/html/head/title

/html/head/title/text()

//td (深度提取的话就是两个/)

//div[@class=‘mine’]
分析网页内容
在谷歌chrome浏览器下,打在网页新闻的网站,选择查看源代码,确认我们可以获取到itmes.py文件的内容(其实那里面的要获取的就是查看了网页源代码之后确定可以获取的)

确认标题、时间、url、来源url和内容可以通过检查和标签对应上
修改spider下创建的爬虫文件
导入包
打开创建的爬虫模板,进行代码的编写,除了导入系统自动创建的三个库,我们还需要导入news.items(这里就涉及到了包的概念了,最开始说的–init–.py文件存在说明这个文件夹就是一个包可以直接导入,不需要安装)

# -*- coding: utf-8 -*-
import scrapy  # 导入scrapy模块
from scrapy.linkextractors import LinkExtractor  # 导入链接提取器
from scrapy.spiders import CrawlSpider, Rule  # 导入爬行蜘蛛,规则
from news.items import NewsItem  # 从news/items.py文件中导入NewsItem类

注意:使用的类ExampleSpider一定要继承自CrawlSpider,因为最开始我们创建的就是一个‘crawl’的爬虫模板,对应上

class News163Spider(CrawlSpider):  # 定义爬虫类名
    name = 'news163'  # 赋值名字
    allowed_domains = ['news.163.com']  # 允许范围
    start_urls = ['http://news.163.com/']  # 开始链接

    rules = (
        Rule(LinkExtractor(allow=r'https://news.163.com/20/0712/13/\d+/.*?html'), callback='parse_item', follow=True),
    )    # url爬取规则

注意, callback不要用parse! 把自动生成的parse删掉
url爬取规则

rules = (
        Rule(LinkExtractor(allow=r'https://news.163.com/20/0712/13/\d+/.*?html'), callback='parse_item', follow=True),
    )    # url爬取规则

测试命令:
scrapy crawl news163

parse_item()是我们的回调函数

def parse_item(self, response):  # 定义分析项目
    item = NewsItem()  # 实例化对象
    item['news_thread'] = response.url.strip
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值