Scrapy爬虫学习笔记:安装及VS CODE配置
一、环境搭建
1. 本文运行环境
代码编辑器:Visual Studio Code: 1.76.2(推荐)
操作系统: Windows 11 专业版 22H2
Python:3.10.7
2. 安装虚拟环境
# 安装虚拟环境模块
pip install virtualenv
pip install virtualenvwrapper-win
virtualenv 20.21.0
virtualenvwrapper-win 1.2.7
Scrapy 2.8.0
3. 虚拟环境用法
windows 新建系统环境变量:WORKON_HOME
值为自建的envs目录,如D:pythonenvs

新建系统环境变量
# 创建虚拟环境
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的解释器:

显示所有命令

输入:python:select interpreter

选择我们建好的虚拟环境pachong-env
二、初识爬虫
1. 基本套路
如果操作过程中出现问题,欢迎评论区留言
学会基本的环境搭建(如上)
有一些html基础:先分析目标网站结构,明确所需要爬取的内容
有一些python基础:写一点代码
2. 创建爬虫
示例:抓取朗文词典网站对单词的解释(不要非法爬取),如本例查找单词:good
# 进入虚拟环境
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的爬虫项目,项目目录为:
d:pythonenvspachong-envlongman
其中有一个名为getDict的爬虫,路径为:
d:pythonenvspachong-envlongmanlongmanspidersgetDict.py
3. 自动生成的代码
getDict.py

getDict.py的内容,只添加了注释
scrapy genspider
是 Scrapy 框架中的一个命令,用于创建一个新的 Spider。Spider 是 Scrapy 中的一个核心组件,它定义了如何爬取和解析某个网站的数据。
而 getDict
是创建 Spider 时指定的 Spider 名称,它通常与要爬取的网站的主题或域名相关。
因此,scrapy genspider getDict longman.org
的意思是创建一个名为 getDict
的 Spider,用于爬取 longman.org(朗文在线词典)网站的数据。此时的爬虫什么也干不了,pass的意思是省略,以后的代码要自己写了。
根据 scrapy genspider getDict longman.org
创建的 Spider 文件 getDict.py
,其中包含了如下代码:
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
类。其中包含以下几个属性和方法:
name
: Spider 的名称,这里设置为'getDict'
。allowed_domains
: 允许爬取的域名,这里设置为'longman.org'
。start_urls
: 要爬取的起始 URL,这里设置为['http://www.longman.org/']
。parse
: Spider 的默认回调函数,当 Spider 下载一个页面后,将会调用这个函数来处理页面的响应内容。
在这个代码中,parse
方法被定义为空,这意味着当 Spider 下载一个页面后,它将什么也不做,只是简单地跳过该页面。要实现具体的页面解析逻辑,需要在这个方法中添加自己的代码。
三、明确目标
1. 手动搜索单词
在朗文网站的搜索框中输入单词good,回车搜索,得到good的释义

good
此时网址显示为:
https://www.ldoceonline.com/dictionary/good
2. 查看页面元素
Chrome或Edge浏览器都可以,F12或右键检查,打开开发者工具界面:

开发者工具
单词good的释义,在类名为"entry_content"的div块中,即我们需要爬取的页面内容。
<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的使用方法请参考:
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=...'>]}
五、结果处理
简单的几行代码即可获取希望得到的结果。
还可以按照需求对结果进行进一步的处理。
也可以将结果存入本地文件或数据库中。