如何抓取网页数据(有关,文章内容质量较高,小编分享给大家做个参考)
优采云 发布时间: 2021-12-08 20:13如何抓取网页数据(有关,文章内容质量较高,小编分享给大家做个参考)
本文文章将详细讲解如何使用Scrapy抓取网页。 文章的内容质量很高,分享给大家作为参考。希望你看完这篇文章之后,对相关知识有了一定的了解。
Scrapy 是一种快速先进的网络爬虫和网络抓取框架,用于爬取 网站 并从其页面中提取结构化数据。它可用于多种用途,从数据挖掘到监控和自动化测试。
老规矩,使用前使用pip install scrapy安装。如果在安装过程中遇到错误,通常是错误:Microsoft Visual C++ 14.0 is required。你只需要访问~gohlke/pythonlibs/#twisted 网站下载Twisted-19.2.1-cp37-cp37m-win_amd64并安装,注意cp37代表我的版本原生 python3.7 amd64 代表我的操作系统位数。
安装,使用pip install Twisted-19.2.1-cp37-cp37m-win_amd64.whl,然后重新安装scrapy后,安装成功;安装成功后我们就可以使用scrapy命令创建爬虫项目了。
接下来,在我的桌面上运行cmd命令并使用scrapystartprojectwebtutorial创建项目:
桌面会生成一个webtutorial文件夹,我们看一下目录结构:
然后我们在spiders文件夹下新建一个quotes_spider.py,写一个爬虫爬取网站保存为html文件。 网站的截图如下:
代码如下:
import scrapy
#定义爬虫类class QuotesSpider(scrapy.Spider): #指定爬虫名字 一会要用到 name = "quotes" #开始请求方法 def start_requests(self): urls = [ 'http://quotes.toscrape.com/page/1/', 'http://quotes.toscrape.com/page/2/'] for url in urls: yield scrapy.Request(url=url, callback=self.parse)#解析写入返回内容到html中 def parse(self, response): page = response.url.split("/")[-2] filename = 'quotes-%s.html' % page with open(filename, 'wb') as f: f.write(response.body) self.log('Saved file %s' % filename)
以下目录结构为:
然后我们在命令行切换到webtutorial文件夹,执行命令scrapycrawlquotes进行爬取(quotes是刚刚指定的爬虫名):
发现错误,没有名为'win32api'的模块,这里我们安装win32api
使用命令pip install pypiwin32,然后继续执行scrapy crawl引用:
可以看到爬虫任务执行成功。这时候webtutorial文件夹下会生成两个html:
关于如何使用Scrapy抓取网页,我在这里分享。希望以上内容能对您有所帮助,让您了解更多。如果你觉得文章不错,可以分享给更多人看。