Scrapy 是一个用于抓取网站数据并提取结构化信息的强大框架,广泛应用于数据挖掘、信息处理或存储历史数据等领域。下面我将提供一个简单的入门案例,通过 Scrapy 来抓取一个网页上的标题和链接。假设我们要从一个新闻网站上抓取文章列表页的文章标题和对应的 URL。
步骤 1: 创建 Scrapy 项目
首先确保已经安装了 Scrapy 库。如果未安装,可以通过 pip 安装:
pip install scrapy
然后创建一个新的 Scrapy 项目:
scrapy startproject mySpider
cd mySpider
这里 mySpider
是你的项目名称。
步骤 2: 定义 Item
在 mySpider/items.py
文件中定义需要抓取的数据模型。例如:
import scrapy
class ArticleItem(scrapy.Item):
title = scrapy.Field()
link = scrapy.Field()
步骤 3: 编写 Spider
接着,在 spiders
目录下创建一个新的爬虫文件,比如 news_spider.py
。这个文件里我们将编写爬虫逻辑来访问特定的网页,并解析出所需的信息:
import scrapy
from mySpider.items import ArticleItem
class NewsSpider(scrapy.Spider):
name = 'news'
allowed_domains = ['example.com'] # 替换为实际的目标域名
start_urls = ['http://example.com/news/'] # 替换为实际要爬取的页面URL
def parse(self, response):
articles = response.css('div.article') # 根据实际情况修改选择器
for article in articles:
item = ArticleItem()
item['title'] = article.css('h2 a::text').get() # 获取标题文本
item['link'] = article.css('h2 a::attr(href)').get() # 获取链接
yield item
注意:上面代码中的 CSS 选择器(如 div.article
, h2 a::text
)需要根据目标网站的具体 HTML 结构进行调整。
步骤 4: 设置输出
为了让爬虫的结果能够保存下来,可以在项目的 settings.py
文件中设置输出格式。例如,使用 JSON 文件存储结果:
FEED_FORMAT = "json"
FEED_URI = "articles.json"
步骤 5: 运行爬虫
最后,在命令行中运行刚刚编写的爬虫:
scrapy crawl news
这将会执行名为 news
的爬虫,并将抓取到的数据保存至当前目录下的 articles.json
文件中。
以上就是一个基本的 Scrapy 入门示例。你可以根据自己的需求对爬虫进一步定制,比如添加更多的字段、处理分页等。希望这对您有所帮助!