一、爬取新浪新闻思路

1、创建scrapy项目
2、分析新浪新闻网站静态页面代码
3、编写对应的xpath公式
4、写代码

二、项目代码

步骤1、创建scrapy项目

创建爬虫文件

scrapy startproject mysqlpjt
进入项目目录后
scrapy genspider -t crawl bangbing sina.com.cn

步骤2、分析新浪网站静态代码


新浪新闻的新闻页面都为
http://news.sina.com.cn/o/2018-03-21/doc-ifysnmez6568198.shtml
由此可以写出正则表达式.*?/[0-9]{4}.[0-9]{2}.[0-9]{2}.*?shtml
所以创建crawl模板的爬虫文件,找出首页中所有符合这个条件的页面进行爬取

步骤3、编写对应的xpath公式

此次只爬取文章标题以及关键词
所以直接写出具体的xpath公式了
标题:/html/head/title/text()
关键词:/html/head/meta[@name='keywords']/@content

步骤4、写代码
1、bangbing .py
# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from mysqlpjt.items import MysqlpjtItemclass BangbingSpider(CrawlSpider):name = 'bangbing'allowed_domains = ['sina.com.cn']start_urls = ['http://sina.com.cn/']rules = (Rule(LinkExtractor(allow=(r'.*?/[0-9]{4}.[0-9]{2}.[0-9]{2}.doc-.*?shtml'), allow_domains=('sina.com.cn')),callback='parse_item',follow=True),)def parse_item(self, response):i = MysqlpjtItem()# 通过XPath表达式提取网页标题i['title'] = response.xpath("/html/head/title/text()").extract()# 通过XPath表达式提取网页的关键词i['keywd'] = response.xpath("/html/head/meta[@name='keywords']/@content").extract()return i

在上面代码中rules部分中的LinkExtractor什么意思可以看上一章18Python爬虫—CrawlSpider自动爬取新浪新闻网页标题和链接

2、items.py
# -*- coding: utf-8 -*-import scrapy

class MysqlpjtItem(scrapy.Item):# 建立name存储网页标题title = scrapy.Field()# 建立keywd存储网页关键词keywd = scrapy.Field()
3、pipelines.py
# -*- coding: utf-8 -*-import pymysqlclass MysqlpjtPipeline(object):def __init__(self):# 连接数据库# spider数据库中 只有一个表为mydb,表中有两个字段title和keywdself.conn = pymysql.connect(host="127.0.0.1", user="root", passwd="123456", db="spider")def process_item(self, item, spider):# 将获取到的name和keywd分别赋给变量name和变量keywdtitle = item["title"][0]# 可能存在没有关键词的情况 如果直接填入item["keywd"][0]可能会出现数组溢出的情况if item["keywd"]:keywd = item["keywd"][0]else:keywd = ""# 构造对应的sql语句sql = "insert into mydb(title, keywd) values('" + title + "','" + keywd + "')"# 通过query实现执行对应的sql语句self.conn.query(sql)# 提交self.conn.commit()return itemdef close_spider(self, spider):# 关闭数据库连接self.conn.close()
4、settings.py
# Configure item pipelines
# See https://doc.scrapy.org/en/latest/topics/item-pipeline.html
# 取消注释
ITEM_PIPELINES = {'mycwpjt.pipelines.MycwpjtPipeline': 300,
}
4、run.py
# 此处是为了在IDE或pycharm中直接执行scrapy,运行此文件即可
from scrapy.cmdline import executeexecute(['scrapy', 'crawl', 'bangbing'])

执行结果:

查看数据库:

有任何疑问可以在下方回复,看到一定会回答

19Python爬虫--爬取新浪新闻标题并保存到数据库相关推荐

  1. python爬虫-使用BeautifulSoup爬取新浪新闻标题

    ** python爬虫-使用BeautifulSoup爬取新浪新闻标题 ** 最近在学习爬虫的技巧,首先学习的是较为简单的BeautifulSoup,应用于新浪新闻上. import requests ...

  2. 使用python网络爬虫爬取新浪新闻(一)

    使用python网络爬虫爬取新浪新闻 第一次写博客,感觉有点不太习惯!不知道怎么突然就想学学爬虫了,然后就用了一天的时间,跟着教程写了这个爬虫,!不说废话了,我将我从教程上学习的东西整个写下来吧,从头 ...

  3. Python网络爬虫爬取新浪新闻

    笔者最近由于需要研究互联网新闻,于是基于邱老师的网络爬虫实战,写了一个爬取新浪新闻的爬虫,爬取的信息有: 新闻标题 来源url 发布时间 正文 编辑者 与邱老师的爬虫相比有以下几点不同: 没有爬取新闻 ...

  4. python3爬虫-爬取新浪新闻首页所有新闻标题

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接: https://blog.csdn.net/xiangwanpeng/articl ...

  5. Python爬虫爬取新浪新闻内容

    首先感谢丘祐玮老师在网易云课堂的Python网络爬虫实战课程,接下来也都是根据课程内容而写.一来算是自己的学习笔记,二来分享给大家参考之用. 课程视频大概是在16年11月录制的,现在是18年2月.其中 ...

  6. python爬虫scrapy爬取新闻标题及链接_18Python爬虫---CrawlSpider自动爬取新浪新闻网页标题和链接...

    一.爬取新浪新闻思路 1.创建scrapy项目 2.分析新浪新闻网站静态页面代码 3.编写对应的xpath公式 4.写代码 二.项目代码 步骤1.创建scrapy项目 scrapy startproj ...

  7. 从入门到入土:Python爬虫学习|实例练手|爬取新浪新闻搜索指定内容|Xpath定位标签爬取|代码注释详解

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  8. 网络爬虫-----python爬取新浪新闻

    思路:先爬取首页,然后通过正则筛选出所有文章url,然后通过循环分别爬取这些url到本地 #python新闻爬虫实战 import urllib.request import re url = 'ht ...

  9. python爬取新浪新闻

    最近公司项目比较少,楼主闲了好长时间了,作为一个刚毕业几个月的新人,心里很烦躁,只能自己找点新东西去学了.看到周围好多人都接触了爬虫,再加上楼主最近沉迷吴宣仪不可自拔,每天投票投票,投票的同时需要监控 ...

最新文章

  1. 《云数据管理:挑战与机遇》2.3.3 恢复和提交
  2. Linux C编程--fork()详解
  3. 被5月GitHub Top20榜单惊呆了 原来区块链大佬都在做这个
  4. linux 有空格的文件夹,Linux之删除带有空格的文件
  5. Dynamics CRM 同一实体多个Form显示不同的Ribbon按钮
  6. 漫谈C++ Builder多线程编程技术
  7. UltraEdit常用快捷键
  8. XGBClassifier()特征选择
  9. P8级别的顶级“并发编程”宝典,最全指南
  10. 你绝对想不到,会Linux的程序员,到底有多吃香!
  11. 启动Activity不显示界面
  12. html文件系统错误的是,Windows10:文件系统错误2147219196
  13. P9 力荐!阿里巴巴最新出品 776 页 JDK 源码 + 并发核心原理解析小册
  14. 三个学生开发的学术钓鱼软件,成功忽悠了整个学术圈
  15. 联合国基金会 广告投放 策略
  16. java版溺尸哪里有_我的世界基岩版1.3新增生物大全 新增珊瑚/幻翼/溺尸等
  17. Android音视频开发:MediaRecorder录制音频
  18. linux 微信不能发图片,微信回应发原图泄露位置信息​;元旦起 AI 造假音视频不得随意发布...
  19. Win10如何用cmd或者Powershell批量安装字体
  20. vue@2.6.14购物车统计总价

热门文章

  1. vue3 + element-plus组件的国际化
  2. 【视频】谁说程序员无趣?这么多只有资深程序员才看懂的段子,会心一笑,深夜释放压力,随着视频哈哈哈哈哈笑出鹅声!
  3. 计算机辅助教育相关论文,教学计算机辅助论文,关于计算机辅助教学在现代教育改革中的作用相关参考文献资料-免费论文范文...
  4. 微信微博分享注意事项(sharesdk)
  5. 夏季溺水事故易发,如何构建防溺水视频预警监测平台?
  6. Ghost 的高可用安装 安装篇
  7. vue iframe 宽高自适应
  8. 带你认识什么是一级指针、二级指针、三级指针
  9. 数据库课程设计矿大_管理信息系统课程设计样本.pdf
  10. 输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。