Python爬虫框架Scrapy安装使用步骤
Scrapy是一个基于Python的爬虫框架,用于高效地爬取网站数据。使用Scrapy可以快速地编写爬虫程序,对于处理需要访问多个页面、提取和存储数据等任务非常有用。下面将介绍Scrapy的安装和使用步骤。
安装Scrapy
Scrapy的安装需要以下步骤:
- 确保已正确安装Python环境:Scrapy要求Python版本为2.7或3.4+。
- 打开命令行,使用pip安装Scrapy:pip install scrapy
- 如果遇到安装问题,请查看Scrapy官方文档进行解决。
创建Scrapy项目
创建Scrapy项目需要以下步骤:
- 打开命令行,使用scrapy命令创建项目:scrapy startproject tutorial
- 进入项目目录:cd tutorial
- 创建一个爬虫:scrapy genspider example example.com
配置爬虫
打开example.py文件,可以看到Scrapy自动生成的代码。需要对其进行以下配置:
- 修改start_urls属性,设置要爬取的网站链接。例如,将该属性设置为start_urls = ['http://example.com/']。
- 修改parse方法,添加提取数据的代码。例如,可以使用XPath提取页面中的标题和链接。
import scrapy
class ExampleSpider(scrapy.Spider):
name = "example"
allowed_domains = ["example.com"]
start_urls = ['http://example.com/']
def parse(self, response):
for sel in response.xpath('//a'):
title = sel.xpath('text()').extract_first()
link = sel.xpath('@href').extract_first()
yield {'title': title, 'link': link}
运行爬虫
运行爬虫需要以下步骤:
- 打开命令行,进入项目目录:cd tutorial
- 运行爬虫:scrapy crawl example
- 爬虫开始工作,检索页面和提取数据。结果会以JSON格式输出,如下:
[
{"title": "Example Domain", "link": "http://www.iana.org/domains/example"},
{"title": null, "link": "#"},
{"title": "More information...", "link": "/domains/reserved"}
]
示例1:使用Scrapy爬取豆瓣电影Top250
下面的代码演示了如何使用Scrapy爬取豆瓣电影Top 250页面。
- 创建Scrapy项目:scrapy startproject douban
- 进入项目目录:cd douban
- 创建一个爬虫:scrapy genspider movie movie.douban.com/top250
- 修改movie.py文件中的代码,提取电影名称和评分。代码如下:
import scrapy
class MovieSpider(scrapy.Spider):
name = "movie"
allowed_domains = ["movie.douban.com"]
start_urls = ['https://movie.douban.com/top250']
def parse(self, response):
for movie in response.xpath('//div[@class="info"]'):
yield {
'title': movie.xpath('div[@class="hd"]/a/span[@class="title"]/text()').extract_first(),
'rating': movie.xpath('div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').extract_first(),
}
next_page = response.xpath('//span[@class="next"]/a/@href')
if next_page:
url = response.urljoin(next_page[0].extract())
yield scrapy.Request(url, self.parse)
- 执行命令,运行爬虫:scrapy crawl movie
- 爬取结果会以JSON格式输出。
示例2:使用Scrapy爬取百度新闻
下面的代码演示了如何使用Scrapy爬取百度新闻页面。
- 创建Scrapy项目:scrapy startproject baidu
- 进入项目目录:cd baidu
- 创建一个爬虫:scrapy genspider news news.baidu.com
- 修改news.py文件中的代码,提取新闻标题和链接。代码如下:
import scrapy
class NewsSpider(scrapy.Spider):
name = "news"
allowed_domains = ["news.baidu.com"]
start_urls = ['https://news.baidu.com/']
def parse(self, response):
for news in response.xpath('//a[@class="title"]'):
yield {
'title': news.xpath('text()').extract_first(),
'link': news.xpath('@href').extract_first(),
}
next_page = response.xpath('//a[@class="nmore"]/@href')
if next_page:
url = response.urljoin(next_page[0].extract())
yield scrapy.Request(url, self.parse)
- 执行命令,运行爬虫:scrapy crawl news
- 爬取结果会以JSON格式输出。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python爬虫框架Scrapy安装使用步骤 - Python技术站