实验名称:关于名人名言的数据抓取
一、实验目的:了解网络数据抓取的基本流程,搭建虚拟开发环境。
二、实验内容:
1.搭建云服务器。
2.创建虚拟开发环境。
3.安装Python。
4.安装Scrapy。
5.创建数据采集项目。
6.进行数据爬取。
7.提取并存储数据。
三、实验过程:
1.云服务器(Ubuntu)。
网上查询了解云服务器的搭建过程,比较阿里云服务器和腾讯云服务器(主要是价格比较),阿里云服务器学生有优惠,虽然腾讯也有优惠,但是考虑了老师用的也是阿里云,便于参考,可以避免许多错误,加之时间仓促,按照老师的步骤可以节省时间,我们小组就购买了阿里云服务器,得到了IP。
2.远程连接服务器(MobaXterm/Xshell)
远程连接服务器,我首先用的是MobaXterm,老师给了安装包,找了教程之后直接进行安装,但是连接上服务器之后,几秒就会断开,需要不断的重连,这对于新手来说,不利于实际操作。因此,我们又选择了Xshell进行远程访问服务器。如图所示:
3.建立用户组
4.创建虚拟开发环境(virtualenv venv)
5.安装Scrapy
6.创建数据采集项目(nini)
7.定义Spider:
import scrapy
class QuotesSpider(scrapy.Spider):
name="glfspider"
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)
def parse(self,response):
page=response.url.split("/")[-2]
filename='glfspider-%s.html'%page
with open(filename,'wb') as f:
f.write(response.body)
self.log('Saved file %s'%filename)
8.执行爬虫
9.存储数据:
import scrapy
class QuotesSpider(scrapy.Spider):
name="nini"
start_urls=[
'http://quotes.toscrape.com/page/1',
]
def parse(self,response):
for quote in response.css('div.quote'):
yield{
'text':quote.css('span.text::text').extract_first(),
'author':quote.css('small.author::text').extract_first(),
'tags':quote.css('div.tags a.tag::text').extract(),
}
next_page=response.css('li.next a::attr(href)').extract_first()
if next_page is not None:
next_page=response.urljoin(next_page)
yield scrapy.Request(next_page,callback=self.parse)
10.json数据文件转成xml文件
json数据文件转成xml文件,我直接用在线转换工具。
四、总结
在学习的过程中,了解了一些基础的知识:云服务器,Python,Scrapy,Xshell。但是谈不上掌握了这些知识,研究的还不够清楚,许多问题是在同学或者百度的帮助下解决的。写代码的时候一定要细心,注意缩进,我第一次采集数据的时候只有一条,检查了很久才发现少打了一个括号。其次,发现自己对相关知识了解太少,技术薄弱,应该多关注一下学术前沿的知识。
相关链接:
Scrapy入门教程: http://www.cnblogs.com/txw1958/archive/2012/07/16/scrapy-tutorial.html
Ubuntu通用基础教程:http://blog.csdn.net/top_worker/article/details/45918399
Python爬虫入门教程:http://blog.csdn.net/column/details/why-bug.html