标签(空格分隔): 腾讯云ubuntu virtualenv scrapy
环境配置
1. 腾讯云
三月份进行了申请,配置,用的是ubuntu
2. 使用MobaXterm_Personal进行SSH远程登陆
1、<i class="icon-file"></i> 新建一个session
2、创建用户目录,添加用户,并设置工作目录和bash环境
(附:当时没截图,此图片摘自网上)
3、<i class="icon-file"></i> 重新建一个用户的session
4、远程服务器登录成功
3. 配置虚拟环境
(pip和相关依赖包已经装过了)
1.python虚拟环境安装
pip install virtualenv
2.python虚拟环境创建
virtualenv python
3.python虚拟环境激活
cd python
source bin/activate
4.安装scrapy
1.pip install -i https://pypi.tuna.tsinghua.edu.cn/simple
2.pip install cryptography
3.pip install scrapy
在安装scrapy时提示:pip需要升级到最新版本:
pip install --upgrade pip
中途因为网络等原因失败过很多次:
安装成功!!!
图:
创建爬虫项目
1.创建一个新的scrapy项目
scrapy startproject quotes
该命令创建了含有以下内容的quotes目录:
- scrapy.cfg: 项目的配置文件
- quotes/: 该项目的python模块。之后您将在此加入代码。
- quotes/items.py: 项目中的item文件.
- quotes/pipelines.py: 项目中的pipelines文件.
- quotes/settings.py: 项目的设置文件.
- quotes/spiders/: 放置spider代码的目录.
2. 编写文件quotes.py,然后放在/quotes/spiders/目录下
(我是在本地写的文件,然后将其放在/quotes/spiders/目录下)
coding=utf-8
import scrapy
#定义QuotesSpider类
class QuotesSpider(scrapy.Spider):
name = 'mianSpider'
start_urls = [
'http://quotes.toscrape.com/'
]
#获得热门标签,并callback parse_tags
def parse(self, response):
for tag_item in response.css('span.tag-item a.tag::attr(href)').extract():
yield scrapy.Request(response.urljoin(tag_item), callback=self.parse_tags)
#yield热门标签下的名人名言、作者
def parse_tags(self, response):
for quote in response.css('div.quote'):
yield {
'tag': response.css('h3 a::text').extract(),
'text': quote.css('span.text::text').extract_first(),
'author': quote.css('small.author::text').extract_first()
}
#遍历标签下的所有页数
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_tags)
3. 运行爬虫,将文档存为json
scrapy crawl mianSpider -o quotes.json
(额,其实是在无数次修改后才有了这结果。。。)
图:
4.将json转化为xml
其实网上有json转为xml的在线工具
本来打算用python来讲json转为xml,python有个python.load()方法可以解析json文件,但是因为json文件格式不太规范,不能直接解析出来,只能用for循环一行行的读出来。然后我就尝试着用正则表达式对读出的字符串进行匹配,转成xml格式,但是由于对正则表达式还不熟悉,失败很多次后还是没有成功,所以还没有得出最后结果。。。。。。
这个是网上在线工具出来的效果:
...
已解决,可以直接用scrapy crawl -o quote.xml