本博客为原创博客,仅供技术学习使用。不经允许禁止复制下来,传到百度文库等平台。

目录

  • 引言
  • 待爬的url
  • 框架架构
  • items的编写
  • Spider的编写
  • 存储pipelines的编写
  • 相关配置settings的编写
  • main方法的编写
  • 运行结果展示

引言

关于Scrapy的相关介绍及豆瓣案例请看我写的另外两篇博客。
http://blog.csdn.net/qy20115549/article/details/52528896
http://blog.csdn.net/qy20115549/article/details/52575291

待爬的url

如下图所示,所需要爬去的url地址,有很多,存储在txt文本文件中,如其中的一个链接为:http://stock.qq.com/a/20160919/007925.htm。

框架架构

items的编写

为了简单起见,我只爬了新闻的标题及正文。如下图所示:

__author__ = ' HeFei University of Technology Qian Yang email:1563178220@qq.com'
# -*- coding: utf-8 -*-
import scrapy
class News(scrapy.Item):content = scrapy.Field()title = scrapy.Field()

Spider的编写

__author__ = ' HeFei University of Technology Qian Yang email:1563178220@qq.com'
# -*- coding:utf-8 -*-
import scrapy
from tengxunnews.items import News
class Teng(scrapy.Spider):name = 'tengxunnews'allowed_domains = ["qq.com"]#read url from file f = open("E:\\a.txt", "r")start_urls = []while True:line = f.readline()if line:pass    # do something hereline=line.strip().replace("['","").replace("']","")p=line.rfind('.')filename=line[0:p]print "the url is %s"%linestart_urls.append(line)else:breakf.close()def parse(self, response):item = News()item['content'] = response.xpath('//div[@id="Cnt-Main-Article-QQ"]/p/text()').extract()item['title'] = response.xpath('//div[@class="hd"]/h1/text()').extract()yield item

存储pipelines的编写

__author__ = ' HeFei University of Technology Qian Yang email:1563178220@qq.com'
# -*- coding: utf-8 -*-
import json
import codecs
#以Json的形式存储
class JsonWithEncodingCnblogsPipeline(object):def __init__(self):self.file = codecs.open('tengxunnews.json', 'w', encoding='gbk')def process_item(self, item, spider):line = json.dumps(dict(item), ensure_ascii=False) + "\n"self.file.write(line)return itemdef spider_closed(self, spider):self.file.close()#将数据存储到mysql数据库
from twisted.enterprise import adbapi
import MySQLdb
import MySQLdb.cursors
class MySQLStorePipeline(object):#数据库参数def __init__(self):dbargs = dict(host = '127.0.0.1',db = 'test',user = 'root',passwd = '112233',cursorclass = MySQLdb.cursors.DictCursor,charset = 'utf8',use_unicode = True)self.dbpool = adbapi.ConnectionPool('MySQLdb',**dbargs)'''The default pipeline invoke function'''def process_item(self, item,spider):res = self.dbpool.runInteraction(self.insert_into_table,item)return item#插入的表,此表需要事先建好def insert_into_table(self,conn,item):conn.execute('insert into tengxunnews(content, title) values(%s,%s)', (item['content'][0],item['title'][0]))

相关配置settings的编写

settings主要放配置方面的文件,如下为我在setting末尾添加的配置代码。

#USER_AGENT
USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.54 Safari/536.5'
# start MySQL database configure setting
MYSQL_HOST = 'localhost'
MYSQL_DBNAME = 'test'
MYSQL_USER = 'root'
MYSQL_PASSWD = '11223'
# end of MySQL database configure setting
ITEM_PIPELINES = {'tengxunnews.pipelines.JsonWithEncodingCnblogsPipeline': 300,'tengxunnews.pipelines.MySQLStorePipeline': 300,
}

main方法的编写

__author__ = ' HeFei University of Technology Qian Yang email:1563178220@qq.com'
from scrapy import cmdline
cmdline.execute("scrapy crawl tengxunnews".split())

运行结果展示

有问题请联系:合肥工业大学 管理学院 钱洋 1563178220@qq.com

Scrapy网络爬虫框架实战[以腾讯新闻网为例]相关推荐

  1. 快速认识网络爬虫与Scrapy网络爬虫框架

    本课程为之后Scrapy课程的预先课程,非常简单,主要是为了完全没有基础的小白准备的,如果你已经有了一定的了解那么请跳过该部分 问:什么是网络爬虫 答:就是从网上下载数据的一个程序,只不过这个程序下载 ...

  2. scrapy 中爬取时被重定向_一篇文章教会你理解Scrapy网络爬虫框架的工作原理和数据采集过程...

    今天小编给大家详细的讲解一下Scrapy爬虫框架,希望对大家的学习有帮助. 1.Scrapy爬虫框架 Scrapy是一个使用Python编程语言编写的爬虫框架,任何人都可以根据自己的需求进行修改,并且 ...

  3. Scrapy网络爬虫框架实际案例讲解,Python爬虫原来如此简单!

    创建项目 Scrapy爬虫框架提供一个工具来创建项目,生成的项目中预置了一些文件,用户需要在这些文件中添加python代码.最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你 ...

  4. 【Python】使用Scrapy 网络爬虫框架Demo

    安装 使用PyCharm安装,进入到PyCharm -> Preferences -> Project Interpreter,点击加号 查询框输入'Scrapy',点击'Install ...

  5. 网络爬虫框架Scrapy简介

    作者: 黄进(QQ:7149101) 一. 网络爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本:它是一个自动提取网页的程序,它为搜索引擎从万维 ...

  6. Python网络爬虫框架 Scrapy简介

    Scrapy 网络爬虫框架 Scrapy的安装 cmd 执行: pip install scrapy测试安装: scrapy -h Scrapy介绍 Scrapy不是一个函数功能库,而是一个爬虫框架. ...

  7. A 3. 笔记 - 精通scrapy网络爬虫 - 刘硕(18年7月)

    第1章 初识scrapy 1.1 创建第一个项目 项目描述: 抓取电商网站上的图书名称和价格 地址:http://books.toscrape.com/catalogue/page-1.html 流程 ...

  8. Python网络爬虫数据采集实战:Scrapy框架爬取QQ音乐存入MongoDB

    ​    通过前七章的学习,相信大家对整个爬虫有了一个比较全貌的了解 ,其中分别涉及四个案例:静态网页爬取.动态Ajax网页爬取.Selenium浏览器模拟爬取和Fillder今日头条app爬取,基本 ...

  9. Python网络爬虫数据采集实战(八):Scrapy框架爬取QQ音乐存入MongoDB

    通过前七章的学习,相信大家对整个爬虫有了一个比较全貌的了解 ,其中分别涉及四个案例:静态网页爬取.动态Ajax网页爬取.Selenium浏览器模拟爬取和Fillder今日头条app爬取,基本涵盖了爬虫 ...

最新文章

  1. 还在 for 循环里使用 + 拼接字符串?明天不用来上班了!
  2. [IIS]修改MaxFieldLength与MaxRequestBytes彻底解决Request Too Long的问题
  3. Android之GSON解析JSON
  4. 微信小程序组件间通信(二)
  5. RabbitMq org.springframework.amqp.AmqpIOException: java.io.IOException
  6. 热部署在java中的包名_09-springboot工程中的热部署实现。
  7. javascript淘宝主图放大镜功能
  8. Map类集合K/V能不能存储null值的情况
  9. druid最大连接数oracle,性能超过DRUID的最强数据库连接池——HikariCP相关配置及简单示例...
  10. 云智慧压测实战分享之JMeter场景设置与监控
  11. BZOJ-3207 花神的嘲讽计划Ⅰ
  12. c语言逻辑运算符组合,C语言的逻辑运算符
  13. Android | 判断App处于前台还是后台的方案
  14. GTC '19 经典回顾 | 如何编排和创造二次元中的舞蹈?
  15. 关于新正方教务系统(湖北工程学院)的one day越权漏洞的说明
  16. 15数字华容道解法 图解_数字华容道最后一行怎么解 最后一道解答技巧
  17. #Vue3篇:watch、watchEffect、watchPostEffect、watchSyncEffect的区别
  18. 网络攻击与防御基本概念
  19. java职业发展路线图_从程序员到CTO的Java技术路线图 JAVA职业规划 JAVA职业发展路线图 系统后台框架图、前端工程师技能图 B2C电子商务基础系统架构解析...
  20. Table was not locked with LOCK TABLES

热门文章

  1. WinAPI: PolylineTo - 绘制一组连续线段(更新当前位置)
  2. 常数中有换行符的错误
  3. Hibernate初学者教程
  4. Elasticsearch--分布式RESTful搜索引擎
  5. 计算机网络的最短帧长公式,每日一题 | CSMA/CD协议的最短帧长公式
  6. ofbiz mysql_ofbiz+mysql安装求教
  7. git 子命令 git tag 常用命令实操教程
  8. C#LeetCode刷题之#349-两个数组的交集(Intersection of Two Arrays)
  9. 打开windows批处理大门
  10. PHPStorm开启Debug