scrapy爬虫简单入门示例

scrapy笔记

步骤:

1.创建项目。

win + R 输入cmd调出命令行窗口,使用cd命令调整到要放项目的文件位置,输入scrapy startproject xxx(项目名称)命令创建项目

例如:在cmd窗口中输入scrapy startproject newsbaiduspider回车。
创建命令截图
在项目文件夹下会生成两个文件
项目文件夹下的文件截图
第一个文件夹是编写代码的文件,第二个.cfg文件为项目的配置文件部署在服务器时使用的。
newsbaiduspider文件下有一个文件夹和五个python文件。
newsbaiduspider文件下的文件
整体的项目结构和文件的作用如下:
文件结构及作用
2.创建一个爬虫在项目文件夹下cmd窗口运行。
scrapy genspider xxx(爬虫名称)xxx.com(目标域名)
创建爬虫
运行完成后将在spider文件夹下生成一个爬虫文件
创建爬虫文件
注意爬虫文件的名字不要和项目的名称一样,不然会创建失败。

3.编写爬虫前的准备工作。

  1. 进入settings.py 将robots协议在settings.py中将ROBOTSTXT_OBEY 设为 False。
  2. 设置请求头(作用将爬虫伪装成浏览器浏览防止ip被封)。进入settings.py 文件设置USER_AGENT。
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'

请求头的内容不需要刻意记忆可以随便打开一个网页,然后F12进入开发者工具,按图示步骤走(network没有内容的化根据提示ctrl+r来重载)。
请求头

  1. 为了减少运行scrapy产生的大量无用输出,可以在settings.py的文件中加入。
LOG_LEVEL = 'WARNING'

将日志输出级别设为warning。

  1. 编写启动脚本,这样就不用每次运行时在命令行中输入scrapy crawl +spidername了。在项目文件夹下新建一个python文件。
from scrapy import cmdline   #导入cmdline

cmdline.execute('scrapy crawl newsspider -o 1.json'.split())  # 注意要split将字符串切一下。命令的意思为运行newsspider爬虫并用json文件来保存数据。

4.明确目标,此次抓取的目标是百度新闻导航栏,各个项目下的焦点(新闻标题+新闻链接)。
爬取内容
编写爬虫:由于爬取的是导航栏的各个选项,因此要一个选项一个选项的爬取。首先进入国内页面,将国内页面的焦点新闻抓取,抓取完成后访问国际页面,抓取焦点新闻,如此往复知道完成所有页面的爬取。

import scrapy
from scrapy import Request


class NewsspiderSpider(scrapy.Spider):
    name = 'newsspider'  # 爬虫名字
    allowed_domains = ['news.baidu.com']  # 允许爬取的范围
    start_urls = ['http://news.baidu.com']  # 起始网址
    
    
    def parse(self, response, **kwargs):
        types = ['guonei', 'guoji', 'mil', 'finance', 'ent', 'sports',
                 'internet', 'tech', 'game', 'lady', 'auto','house']  # 导航栏各个选项卡的标题
        if response.url[22:] not in types:  # 判断是否是导航栏网址
            for ty in types:  # 遍历导航栏
                yield Request('http://news.baidu.com/'+ty)  # 将获取的某一导航栏的响应抛出,链接通过字符串连接的到

        else:
            pages = response.xpath("//div[@class='l-left-col']//div[@class='b-left']/ul/li")  # xpath获取焦点新闻部分
            for page in pages:
                urls = page.xpath("./a/@href").extract()  # 提取焦点新闻的各个链接
                title = page.xpath("./a/text()").extract()  # 获取新闻标题
                yield {  # 将数据抛出 
                    'urls': urls,
                    'title': title
                }

5.设置输出格式。
进入settings.py文件,设置输出的编码,如果不该的话编码为Unicode码,汉字会乱码。

FEED_EXPORT_ENCODING = 'utf-8'

6.爬取得到的部分数据。

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值