在写这篇文章之前,xxx已经写过了几篇关于改安装内容主题的文章,想要了解的朋友可以去翻一下之前的文章
Scrapy:
os:win7
python:2.7
首先是安装easy_install scrapy是的 很轻易就安装好了,难的是那么多的依赖包 http://doc.scrapy.org/en/0.16/intro/install.html 这里有win下的安装指点
如果其实编译不过,或者是要安装太多win的货色,就去 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载一个编译好的库安装吧
第一步:建立一个项目
scrapy startproject tutorial
scrapy.cfg:是配置文件
第二步:创立一个Item
在items.py中创立一个Item
#coding:utf8
from scrapy.item import Item, Field
#Item是用来存储抓取的内容的,类似一个字典
class DmozItem(Item):
"""this is model of Item, likes ORM"""
title = Field()
link = Field()
desc = Field()
第三部:第一个爬虫
爬虫类要继承 scrapy.spider.BaseSpider 并且要有三个属性:
name start_urls parse
怎么解析网页内容呢? Xpath 对这里要使用Xpath选择器来解析内容
W3cschool 有部份学习内容 W3cschool 有部份学习内容
创立一个dmoz_spider.py文件 位置是spiders目录下
岭上娇艳的鲜花,怎敌她美丽的容颜?山间清澈的小溪,怎比她纯洁的心灵?
#coding=utf8
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from tutorial.items import DmozItem
class DmozSpider(BaseSpider):
"""spider"""
# name must be unique
name = "dmoz"
allowed_domains = ["dmoz.org"]
start_urls = [
"http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
"http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
]
#overwrite parse method
def parse(self, response):
#filename = response.url.split("/")[-2]
#open(filename, "wb").write(response.body)
# use
hxs = HtmlXPathSelector(response)
#extract all ul tag's children tag li
sites = hxs.select('//ul/li')
items = []
for site in sites:
item = DmozItem()
item["title"] = site.select('a/text()').extract()
item["link"] = site.select('a/@href').extract()
item["desc"] = site.select('text()').extract()
items.append(item)
return items
在 scrapy.cfg地点的目录下 使用命令
scrapy crawl dmoz -o items.json -t json
此时主目录下多了一个items.json 就是抓取到的内容
最简单的抓取网页-解析网页-存储数据的爬虫就这样完成了。
引用:
文章结束给大家分享下程序员的一些笑话语录: 一条狗在街上闲逛,看见橱窗里一张告示:「招聘程序员。会编程,有团队精神,至少精通两种语言。均等机会。」
那条狗就进去申请,但是被拒绝了。
「我不能雇一条狗在公司里做事。」经理说。
狗不服气,指着告示上「均等机会」几字抗议。
经理没法,叹了口气,不屑地问道:「你会编程吗?」
那条狗默默地走到电脑前,编了个程序,运作准确。
「你有团队精神吗?」经理问。
那条狗掉头看了看门外,一大群野狗在外面虎视耽耽。
「我真的不能雇狗做这份工作。」经理气急败坏地说。
「就算会编程、有团队精神,但是我需要的雇员至少要能精通两种语言。」
那条狗抬头看着经理说:「喵-噢。」