【python】【爬虫】Scrapy Crawl自动爬虫【获取新浪新闻为例】
Scrapy自动爬虫(crawl模板)【scrapy genspider -t crawl news news.sina.com.cn】
Crawl自动爬虫适用:
对有规律的网站进行自动爬取
Crawl自动爬虫总体思路:
- 先获取初始网址,获取初始网址中的所有链接,筛选出目标链接并进行访问
- 从访问的链接中返回需要的信息
- 在访问的链接中重复(1)(2)
Crawl自动爬虫与Basic基础爬虫的区别
模板中多了一个rules()方法,包括有参数:LinkExtractor链接提取,其参数allow指定从Start_url中提取链接的规则;callback指定回调处理函数;follow指定是否执行步骤(3)
目标:
获取当日(2021-06-19)的放置在新浪新闻首页的新闻
分析:
对于当日的新闻,新闻连接中均出现了2021-06-19的时间字样,不管前面的前缀为/c /x。故链接筛选规则可设置为该时间字样。
进入某一新闻首页后,<title>标签下的文本内容为该新闻网页的题目,大部分新闻的网址放在带有 og:url属性的<meta>标签中,但有的新闻源码中没有放本篇新闻的链接。
代码
items.py
声明存放链接和标题的link和title属性
import scrapyclass FirstscrapyItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()title = scrapy.Field() # 提取新闻标题link = scrapy.Field() # 提取链接pass
settings.py
开放并设置模拟服务器的报文头,取消爬虫协议
autosinanews.py
使用crawl模板生成的爬虫文件。【scrapy genspider -t crawl news news.sina.com.cn】
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from firstScrapy.items import FirstscrapyItem
from scrapy.http import Requestclass AutosinanewsSpider(CrawlSpider):name = 'autosinanews'allowed_domains = ['news.sina.com.cn']start_urls = ['http://news.sina.com.cn/']# rules指定提取链接的规则# allow 筛选链接的规则,设置筛选出带有时间字样的链接# callback 指定回调函数# follow指定链接是否跟进,即在子页是否继续往下走rules = (Rule(LinkExtractor(allow=r'2021-06-19'), callback='parse_item', follow=False),) # 指定在当前页中提取链接的规则# 首次模拟浏览器def start_requests(self):ua = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36"}yield Request('http://news.sina.com.cn', headers = ua)def parse_item(self, response):item = FirstscrapyItem()#item['domain_id'] = response.xpath('//input[@id="sid"]/@value').get()#item['name'] = response.xpath('//div[@id="name"]').get()#item['description'] = response.xpath('//div[@id="description"]').get()pat_title = "/html/head/title/text()"pat_link = "/html/head/meta[@property='og:url']/@content"item["title"] = response.xpath(pat_title).get()item["link"] = response.xpath(pat_link).get()#print(item["title"])#print(item["link"])#print("")return item
pipelines.py
后续的数据处理,本爬虫因为仅测试使用,可以不修改pipelines,在爬虫文件中执行输出。
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html# useful for handling different item types with a single interface
from itemadapter import ItemAdapterclass FirstscrapyPipeline:def process_item(self, item, spider):# 输出容器内容for i in range(0, len(item["title"])):print(item["title"])print(item["link"])print(" ")return item
【python】【爬虫】Scrapy Crawl自动爬虫【获取新浪新闻为例】相关推荐
- 使用Pull解析XML获取新浪新闻
目标是获取新浪新闻如图所示位置的头条新闻数据: 思路是这样的,先访问这个首页拿到这个部分每一条新闻的url,然后再逐一访问这些详情页面,从详情页面获取标题正文图片等数据. 1.通过HttpUrlCon ...
- python爬虫scrapy爬取新闻标题及链接_18Python爬虫---CrawlSpider自动爬取新浪新闻网页标题和链接...
一.爬取新浪新闻思路 1.创建scrapy项目 2.分析新浪新闻网站静态页面代码 3.编写对应的xpath公式 4.写代码 二.项目代码 步骤1.创建scrapy项目 scrapy startproj ...
- 【API爬虫】30分钟百万条新浪新闻信息爬取。python得极速之旅
请参考源码,文字是最先得想法,没有再做更改.源码以更新 前期准备:requests库:使用pip install requests 安装. pymongo库:使用pip install pymongo ...
- python爬虫新浪新闻_python爬虫之获取新浪新闻信息
一:前言 windows平台: 1):谷歌的chrome浏览器:python3.6的软件安装包,需要导入的库有: [python] view plain copy pip install reque ...
- 使用python网络爬虫爬取新浪新闻(一)
使用python网络爬虫爬取新浪新闻 第一次写博客,感觉有点不太习惯!不知道怎么突然就想学学爬虫了,然后就用了一天的时间,跟着教程写了这个爬虫,!不说废话了,我将我从教程上学习的东西整个写下来吧,从头 ...
- 19Python爬虫--爬取新浪新闻标题并保存到数据库
一.爬取新浪新闻思路 1.创建scrapy项目 2.分析新浪新闻网站静态页面代码 3.编写对应的xpath公式 4.写代码 二.项目代码 步骤1.创建scrapy项目 创建爬虫文件 scrapy st ...
- python3爬虫-爬取新浪新闻首页所有新闻标题
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接: https://blog.csdn.net/xiangwanpeng/articl ...
- 多线程新浪新闻搜索网络爬虫-基于关键字
本文为原创博客,仅供技术学习使用.未经允许,禁止将其复制下来上传到百度文库等平台.如有转载请注明本文博客的地址(链接) 源码获取请联系:1563178220@qq.com 简介 互联网有海量的新闻,如 ...
- 爬虫实战操作(2)—— 新浪新闻内容细节
本文实现获取新浪新闻内容的各种细节,标题.时间.来源.内文.编辑者.评论数. import requests from bs4 import BeautifulSoup res=requests.ge ...
最新文章
- R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(配置边界颜色)实战
- [SCOI2013]多项式的运算
- java filereader blob_如何从javascript发送音频blob到java spring服务...
- CentOS配置ssh无密码登录
- Java学习笔记24(Map集合)
- python3.7输出语句_python3.4用循环往mysql5.7中写数据并输出的实现方法
- 记2个月来,我在Csdn 掀起的微软面试风暴
- include查找文件路径
- c语言程序设计基础第三版答案,清华大学出版社-图书详情-《C语言程序设计上机指导与习题解答(第3版)》...
- linux部署moodle
- 计算机组策略无法编辑,win7系统无法打开本地组策略编辑器的解决方法
- 如何使用Python实现一个pdf阅读器?
- git stash暂存操作
- PDF文件简介及PDF文档加密方法
- win10禁用驱动程序强制签名_只需一个简单命令,在Win10上启用Windows恢复环境(WinRE)...
- 如何判断是否适合学编程?
- NUCLEO-L476RG开发板学习笔记汇总
- 区块链投资现状和区块链应用部署的探讨
- 2015淘宝最新排名新规则
- Java基础语法96-Java91011新特性
热门文章
- 学霸黄晓南,和她的霸蛮品友互动
- 数字化工厂顶层架构分析
- 不看我真的会很伤心【压测工具:提升系统性能的利器】,查看TPS,计算TPS,计算压测指标、压测名词解释、教大家如何压测
- html修改自动变回去,将Htm和Html文件图标改回默认图标
- SAP ABAP me21n 采购订单抬头字段增强 MM06E005
- CnOpenData信用评级机构从业人员信息数据
- lwip简介及基础知识
- ​2023年湖北武汉自己怎么报考二建?报考二建学历不符怎么办?启程别
- 【Unity】滚动缩放关卡选择列表
- java毕业生设计冰鲜鱼管理系统的设计与实现计算机源码+系统+mysql+调试部署+lw