Scrapy爬虫学习笔记:安装及VS CODE配置

2023-06-0917:36:37后端程序开发Comments1,421 views字数 3658阅读模式

一、环境搭建

1. 本文运行环境

代码编辑器:Visual Studio Code: 1.76.2(推荐)
操作系统: Windows 11 专业版 22H2
Python:3.10.7文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

2. 安装虚拟环境

# 安装虚拟环境模块
pip install virtualenv
pip install virtualenvwrapper-win

virtualenv 20.21.0
virtualenvwrapper-win 1.2.7
Scrapy 2.8.0文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

3. 虚拟环境用法

windows 新建系统环境变量:WORKON_HOME 值为自建的envs目录,如D:pythonenvs文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

Scrapy爬虫学习笔记:安装及VS CODE配置

新建系统环境变量文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

# 创建虚拟环境
mkvirtualenv 虚拟环境名称
如:mkvirtualenv pachong-env

# 进入虚拟环境
workon 虚拟环境名称
如:workon pachong-env

# 退出虚拟环境
deactivate

# 列出当前已有虚拟环境
workon
或
lsvirtualenv

4. 爬虫基本用法

(pachong-env) D:pythonenvspachong-env>scrapy
Scrapy 2.8.0 - no active project

Usage:
  scrapy <command> [options] [args]

Available commands:
  bench         Run quick benchmark test
  fetch         Fetch a URL using the Scrapy downloader
  genspider     Generate new spider using pre-defined templates
  runspider     Run a self-contained spider (without creating a project)
  settings      Get settings values
  shell         Interactive scraping console
  startproject  Create new project
  version       Print Scrapy version
  view          Open URL in browser, as seen by Scrapy

  [ more ]      More commands available when run from project directory

Use "scrapy <command> -h" to see more info about a command

5. VSCode设置

在安装好以上环境和模块后,使用VSCode编写爬虫python代码时,需要指定python的解释器:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

Scrapy爬虫学习笔记:安装及VS CODE配置

显示所有命令文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

Scrapy爬虫学习笔记:安装及VS CODE配置

输入:python:select interpreter文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

Scrapy爬虫学习笔记:安装及VS CODE配置

选择我们建好的虚拟环境pachong-env文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

二、初识爬虫

1. 基本套路

如果操作过程中出现问题,欢迎评论区留言文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

学会基本的环境搭建(如上)
有一些html基础:先分析目标网站结构,明确所需要爬取的内容
有一些python基础:写一点代码文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

2. 创建爬虫

示例:抓取朗文词典网站对单词的解释(不要非法爬取),如本例查找单词:good文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

# 进入虚拟环境
C:Usersadministrator>workon pachong-env

# 进入虚拟环境目录
(pachong-env) C:Usersadministrator>cdvirtualenv

# 创建一个爬虫项目longman
(pachong-env) d:pythonenvspachong-env>scrapy startproject longman
New Scrapy project 'longman', using template directory 'd:pythonenvspachong-envlibsite-packagesscrapytemplatesproject', created in:
    d:pythonenvspachong-envlongman

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

# 进入项目目录longman
(pachong-env) d:pythonenvspachong-env>cd longman

# 创建一个爬虫
(pachong-env) d:pythonenvspachong-envlongman>scrapy genspider getDict longman.org
Created spider 'getDict' using template 'basic' in module:
  longman.spiders.getDict

至此,可以生成一个名为longman的爬虫项目,项目目录为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

d:pythonenvspachong-envlongman

其中有一个名为getDict的爬虫,路径为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

d:pythonenvspachong-envlongmanlongmanspidersgetDict.py

3. 自动生成的代码

getDict.py文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

Scrapy爬虫学习笔记:安装及VS CODE配置

getDict.py的内容,只添加了注释文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

scrapy genspider 是 Scrapy 框架中的一个命令,用于创建一个新的 Spider。Spider 是 Scrapy 中的一个核心组件,它定义了如何爬取和解析某个网站的数据。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

而 getDict 是创建 Spider 时指定的 Spider 名称,它通常与要爬取的网站的主题或域名相关。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

因此,scrapy genspider getDict longman.org 的意思是创建一个名为 getDict 的 Spider,用于爬取 longman.org(朗文在线词典)网站的数据。此时的爬虫什么也干不了,pass的意思是省略,以后的代码要自己写了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

根据 scrapy genspider getDict longman.org 创建的 Spider 文件 getDict.py,其中包含了如下代码:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

import scrapy


class GetdictSpider(scrapy.Spider):
    name = 'getDict'
    allowed_domains = ['longman.org']
    start_urls = ['http://www.longman.org/']

    def parse(self, response):
        pass

这段代码定义了一个名为 GetdictSpider 的 Spider 类,它继承了 Scrapy 的 Spider 类。其中包含以下几个属性和方法:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

  • name: Spider 的名称,这里设置为 'getDict'
  • allowed_domains: 允许爬取的域名,这里设置为 'longman.org'
  • start_urls: 要爬取的起始 URL,这里设置为 ['http://www.longman.org/']
  • parse: Spider 的默认回调函数,当 Spider 下载一个页面后,将会调用这个函数来处理页面的响应内容。

在这个代码中,parse 方法被定义为空,这意味着当 Spider 下载一个页面后,它将什么也不做,只是简单地跳过该页面。要实现具体的页面解析逻辑,需要在这个方法中添加自己的代码。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

三、明确目标

1. 手动搜索单词

在朗文网站的搜索框中输入单词good,回车搜索,得到good的释义文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

Scrapy爬虫学习笔记:安装及VS CODE配置

good文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

此时网址显示为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

https://www.ldoceonline.com/dictionary/good文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

2. 查看页面元素

Chrome或Edge浏览器都可以,F12或右键检查,打开开发者工具界面:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

Scrapy爬虫学习笔记:安装及VS CODE配置

开发者工具文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

单词good的释义,在类名为"entry_content"的div块中,即我们需要爬取的页面内容。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

<div class="entry_content"></div>

四、代码实现

1. 修改爬取网址

start_urls = ["https://www.ldoceonline.com/dictionary/good"]

2. 添加分析方法

def parse(self, response):
    # 使用xpath获取<div class="entry_content"></div>中的内容,存入变量data中。
    data = response.xpath('//div[@class="entry_content"]')
    # 返回data的内容
    yield {"data":data}

Xpath的使用方法请参考:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html


3. 运行爬虫

# 运行爬虫:
(pachong-env) D:pythonenvspachong-envlongman>scrapy crawl getDict 


[scrapy.core.scraper] DEBUG: Scraped from <200 https://www.ldoceonline.com/dictionary/good>

# 爬取结果:
{'data': [<Selector xpath='//div[@class="entry_content"]' data='<div class="entry_content"><h1 class=...'>]}

五、结果处理

简单的几行代码即可获取希望得到的结果。
还可以按照需求对结果进行进一步的处理。
也可以将结果存入本地文件或数据库中。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46378.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/46378.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定