目标:爬取全国报刊名称及地址

链接:http://news.xinhuanet.com/zgjx/2007-09/13/content_6714741.htm

目的:练习scrapy爬取数据

学习过scrapy的基本使用方法后,我们开始写一个最简单的爬虫吧。

目标截图:

  1、创建爬虫工程

$ cd ~/code/crawler/scrapyProject
$ scrapy startproject newSpapers

  2、创建爬虫程序

$ cd newSpapers/
$ scrapy genspider nationalNewspaper news.xinhuanet.com 

  3、配置数据爬取项 

$ cat items.py
# -*- coding: utf-8 -*- # Define here the models for your scraped items
#
# See documentation in:
# http://doc.scrapy.org/en/latest/topics/items.html import scrapy class NewspapersItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
name = scrapy.Field()
addr = scrapy.Field()

 4、 配置爬虫程序

$ cat spiders/nationalNewspaper.py
# -*- coding: utf-8 -*-
import scrapy
from newSpapers.items import NewspapersItem class NationalnewspaperSpider(scrapy.Spider):
name = "nationalNewspaper"
allowed_domains = ["news.xinhuanet.com"]
start_urls = ['http://news.xinhuanet.com/zgjx/2007-09/13/content_6714741.htm'] def parse(self, response):
sub_country = response.xpath('//*[@id="Zoom"]/div/table/tbody/tr[2]')
sub2_local = response.xpath('//*[@id="Zoom"]/div/table/tbody/tr[4]')
tags_a_country = sub_country.xpath('./td/table/tbody/tr/td/p/a')
items = []
for each in tags_a_country:
item = NewspapersItem()
item['name'] = each.xpath('./strong/text()').extract()
item['addr'] = each.xpath('./@href').extract()
items.append(item)
return items

  5、配置谁去处理爬取结果

$ cat settings.py
……
#HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'
ITEM_PIPELINES = {'newSpapers.pipelines.NewspapersPipeline':100}

  6、配置数据处理程序

$ cat pipelines.py
# -*- coding: utf-8 -*- # Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html import time
class NewspapersPipeline(object):
def process_item(self, item, spider):
now = time.strftime('%Y-%m-%d',time.localtime())
filename = 'newspaper.txt'
print '================='
print item
print '================'
with open(filename,'a') as fp:
fp.write(item['name'][0].encode("utf8")+ '\t' +item['addr'][0].encode("utf8") + '\n')
return item

  7、查看结果

$ cat spiders/newspaper.txt
人民日报 http://paper.people.com.cn/rmrb/html/2007-09/20/node_17.htm
海外版 http://paper.people.com.cn/rmrbhwb/html/2007-09/20/node_34.htm
光明日报 http://www.gmw.cn/01gmrb/2007-09/20/default.htm
经济日报 http://www.economicdaily.com.cn/no1/
解放军报 http://www.gmw.cn/01gmrb/2007-09/20/default.htm
中国日报 http://pub1.chinadaily.com.cn/cdpdf/cndy/

  

程序源代码:

scrapy实战--爬取报刊名称及地址的更多相关文章

  1. 简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息

    简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息 简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息 系统环境:Fedora22(昨天已安装scrapy环境) 爬取的开始URL:ht ...

  2. 教程+资源,python scrapy实战爬取知乎最性感妹子的爆照合集(12G)!

    一.出发点: 之前在知乎看到一位大牛(二胖)写的一篇文章:python爬取知乎最受欢迎的妹子(大概题目是这个,具体记不清了),但是这位二胖哥没有给出源码,而我也没用过python,正好顺便学一学,所以 ...

  3. scrapy实战--爬取最新美剧

    现在写一个利用scrapy爬虫框架爬取最新美剧的项目. 准备工作: 目标地址:http://www.meijutt.com/new100.html 爬取项目:美剧名称.状态.电视台.更新时间 1.创建 ...

  4. Python使用Scrapy框架爬取数据存入CSV文件(Python爬虫实战4)

    1. Scrapy框架 Scrapy是python下实现爬虫功能的框架,能够将数据解析.数据处理.数据存储合为一体功能的爬虫框架. 2. Scrapy安装 1. 安装依赖包 yum install g ...

  5. Scrapy实战篇(六)之Scrapy配合Selenium爬取京东信息(上)

    在之前的一篇实战之中,我们已经爬取过京东商城的文胸数据,但是前面的那一篇其实是有一个缺陷的,不知道你看出来没有,下面就来详细的说明和解决这个缺陷. 我们在京东搜索页面输入关键字进行搜索的时候,页面的返 ...

  6. scrapy实战2分布式爬取lagou招聘(加入了免费的User-Agent随机动态获取库 fake-useragent 使用方法查看:https://github.com/hellysmile/fake-useragent)

    items.py # -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentati ...

  7. scrapy框架爬取笔趣阁完整版

    继续上一篇,这一次的爬取了小说内容 pipelines.py import csv class ScrapytestPipeline(object): # 爬虫文件中提取数据的方法每yield一次it ...

  8. scrapy框架爬取笔趣阁

    笔趣阁是很好爬的网站了,这里简单爬取了全部小说链接和每本的全部章节链接,还想爬取章节内容在biquge.py里在加一个爬取循环,在pipelines.py添加保存函数即可 1 创建一个scrapy项目 ...

  9. Python分布式爬虫开发搜索引擎 Scrapy实战视频教程

    点击了解更多Python课程>>> Python分布式爬虫开发搜索引擎 Scrapy实战视频教程 课程目录 |--第01集 教程推介 98.23MB |--第02集 windows下 ...

随机推荐

  1. JavaScript -- 猜数、遍历

    ----- 004-猜数.html ----- <!DOCTYPE html> <html> <head> <meta http-equiv="Co ...

  2. 原来你一直写错了?!实力分享一波 CSS 使用的书写规范顺序与偏门又实用的样式...

    我们在埋头写代码的时候,还要学会收集整理一些常用的代码小技巧,以便在工作时候,可以及时调取,提高工作效率. 今天,我把之前收集整理的一些CSS代码小技巧分享出来,供你参考学习,希望对你有帮助. 一.C ...

  3. IndexDB的基本操作

    1.前端存储的一个数据库. 2.介绍一下基本操作. <!DOCTYPE html> <html> <head> <meta charset="UTF ...

  4. elasticsearch插件安装之--拼音插件

    /** * vm12下的centos7.2 * elasticsearch 5.2.2 */ 有时在淘宝搜索商品的时候, 会发现使用汉字, 拼音, 或者拼音混合汉字都会出来想要的搜索结果, 今天找了一 ...

  5. docker 创建基础镜像

    docker 安装卸妆官方说明:  https://docs.docker.com/install/linux/docker-ee/centos/#os-requirements 本系列基于cento ...

  6. C++中虚函数的动态绑定和多态性

    目录 静态类型 vs 动态类型.静态绑定 vs 动态绑定 虚函数动态绑定实现机制.虚析构函数 多态性 一.静态 vs 动态 静态类型 VS 动态类型.静态类型指的是对象声明的类型,在编译器确定的.动态 ...

  7. Verdi文档路径

    1.echo $VERDI_HOME 2.cd $VERDI_HOME/doc 3.okular VerdiTut.pdf& Verdi主要在以下方面使用 Verdi使用情形:        ...

  8. 转载:哈希加密算法 MD5,SHA-1,SHA-2,SHA-256,SHA-512,SHA-3,RIPEMD-160 - aTool

    http://www.atool.org/hash.php 一.MD5哈希加密算法 MD5即Message-Digest Algorithm 5(信息-摘要算法 5),用于确保信息传输完整一致.是计算 ...

  9. c#读取html文件内容替换之后再写入

    string sss = File.ReadAllText("E:\\FM\\Mall\\MallSGWeb\\MallSGWeb\\MALL_simple\\File\\11111.htm ...

  10. 如何使用 Telegram

    Telegram是一款加密的实时通讯软件,本文告诉大家如何使用 这个软件. 在使用之前,需要保证自己已经开了梯子,如果没有梯子,那么就无法使用这个工具. 假如梯子是 127.0.0.1 端口 1080 ...