Scrapy库安装和项目创建建议收藏

scrapy库安装使用pip命令安装scrapy,在安装过程中可能会因为缺少依赖库而报错,根据报错提示依次下载需要的依赖库,下载过程中注意系统类型和Python版本我在安装过程中依次安装的库有:

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

Scrapy是一个流行的网络爬虫框架,从现在起将陆续记录Python3.6下Scrapy整个学习过程,方便后续补充和学习。

本文主要介绍scrapy安装、项目创建和测试基本命令操作

scrapy库安装

  使用pip命令安装scrapy,在安装过程中可能会因为缺少依赖库而报错,根据报错提示依次下载需要的依赖库,下载过程中注意系统类型和Python版本

  我在安装过程中依次安装的库有:

  pip install pywin32-223-cp36-cp36m-win32.whl

  pip install Twisted-17.9.0-cp36-cp36m-win32.whl

  pip install scrapy

  Unofficial Windows Binaries for Python Extension Packages:https://www.lfd.uci.edu/~gohlke/pythonlibs/

创建项目

  scrapy安装成功后打开cmd进入想要存储scrapy项目的目录使用startproject命令创建一个新项目:

D:\>scrapy startproject scraptest
New Scrapy project 'scraptest', using template directory 'c:\\python36-32\\lib\\
site-packages\\scrapy\\templates\\project', created in:
    D:\scraptest

You can start your first spider with:
    cd scraptest
    scrapy genspider example example.com

在D:\scraptest\目录下会生成对应的架构目录树

scrapytest/
    scrapy.cfg
    scrapytest/
        __init__.py
        items.py          #定义抓取域的模型
        pipelines.py
        settings.py       #定义一些设置,如用户代理、爬取延时等
        middlewares.py
        __pycache__/
        spiders/
            __pycache__/
            __init__.py

创建爬虫

  使用genspider命令,传入爬虫模块名、域名以及可选模块参数

D:\scraptest>scrapy genspider country example.webscraping.com
Created spider 'country' using template 'basic' in module:
  scraptest.spiders.country

D:\scraptest\scraptest\spiders目录下创建country.py

# -*- coding: utf-8 -*-
import scrapy

class CountrySpider(scrapy.Spider):
    name = 'country'
    allowed_domains = ['example.webscraping.com']
    start_urls = ['http://example.webscraping.com/']

    def parse(self, response):
        pass

1. name作为爬虫名,必须指定名称,根据源码内容,若值为空会提示ValueErro

2. start_urls位爬取的网页

3. parse函数名不能修改,这是源码中指定的回调函数

测试爬虫

# -*- coding: utf-8 -*-
import scrapy
from lxml import etree

class CountrySpider(scrapy.Spider):
    name = 'country'
    allowed_domains = ['example.webscraping.com']
    start_urls = ['http://example.webscraping.com/places/default/view/Afghanistan-1']

    #该函数名不能改变,因为scrapy源码中默认callback函数的函数名就是parse
    def parse(self, response):
        tree = etree.HTML(response.text)
        for node in (tree.xpath('//tr/td[@class="w2p_fw"]')):
            print (node.text)

 使用crawl命令,可以根据-s LOG_LEVEL=DEBUG或-s LOG_LEVEL=ERROR来设置日志信息

D:\scraptest>scrapy crawl country --nolog
None
647,500 square kilometres
29,121,286
AF
Afghanistan
Kabul
None
.af
AFN
Afghani
93
None
None
fa-AF,ps,uz-AF,tk
None

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120195.html原文链接:https://javaforall.net

(0)
上一篇 2021年12月19日 上午6:00
下一篇 2021年12月19日 上午7:00


相关推荐

  • 微信小程序bindtap 与 catchtap 是使用

    微信小程序bindtap 与 catchtap 是使用如果写小程序对二者不理解的 那看到这边博客 将很快帮助到您 个人总结的一句话 bindtap 点击事件在同一个 view 中会向上冒泡 而 catchtap 不会向上冒泡下面会有一个 demo 给出解释 说他们使用的时候先说下微信小程序的事件分类冒泡事件与非冒泡事件官网上这样规定的事件分类事件分为冒泡事件和非冒泡事件 冒泡事件 当一个组件上的事件被触发后 该事件会向父节点传递

    2026年3月18日
    3
  • 查看mysql是否脑裂_数据库脑裂

    查看mysql是否脑裂_数据库脑裂OracleRACCSS 提供 2 种后台服务包括群组管理 GroupManagme 简称 GM 和节点监控 NodeMonitor 简称 NM 其中 GM 管理组 group 和锁 lock 服务 在集群中任意时刻总有一个节点会充当 GM 主控节点 masternode 集群中的其他节点串行地将 GM 请求发送到主控节点 masternode 而 masternode 将集群成员变更信息广播给集群中的

    2026年3月18日
    2
  • H3C 通配符掩码

    H3C 通配符掩码转载于:https://www.cnblogs.com/fanweisheng/p/11163784.html

    2022年7月24日
    14
  • 永久免费内网穿透软件_不限速内网穿透

    永久免费内网穿透软件_不限速内网穿透三种永久免费内网穿透傻瓜式使用教程方法一(使用qydev)方法二(使用飞鸽内网穿透)方法三使用(神卓互联内网穿透)教程方法一(使用qydev)官网:点击访问1、官网页面:找到客户端下载2、找到自己电脑或者运行平台对应的版本(我的是windows64位)3、下载完成后解压到自己熟悉的文件内保存,解压后,暂时不管她,继续第4步4、登录官网后台:新增隧道点击隧道管理–>开通隧道只需要填写这4项:隧道协议选择:http隧道名称: 取一个独一无二的名字

    2022年10月5日
    5
  • 目标检測的图像特征提取之(一)HOG特征

    目标检測的图像特征提取之(一)HOG特征

    2021年12月3日
    46
  • AsyncTask你真的会用吗?实战、原理、最佳实践!(Android Q)

    AsyncTask你真的会用吗?实战、原理、最佳实践!(Android Q)AsyncTaskAsy 可以非常方便 简单的在 UI 线程中使用 它帮助我们在不使用 Thread 和 Handler 的情况下 在后台执行一个后台 异步 任务 并且把执行结果通知到 UI 线程中 也就是说 使用 AsyncTask 可以极大的简化我们进行后台任务的操作 使用它 我们不必关心工作线程是如何启动的 也不必关心 工作线程和 UI 线程之间的通信问题 这些都被 AsyncTask 通过内部封装实现了 我们只需要按接口规范使用它即可 AsyncTask 适用于短时的后台 异步 任务 最多几秒钟 它并不适合时间

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号