【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 ...
最新文章
- 插件化知识梳理(7) 类的动态加载入门
- matlab手动抠取圆形区域_利用Photoshop通道工具扣取人物头发教程-PS抠图
- Ascii码 、16进制与 char
- Shell 输入/输出重定向
- 跟vczh看实例学编译原理——二:实现Tinymoe的词法分析
- 怪物行为树案例_Behavior Designer行为树(简单实现巡逻)
- 【2022年蓝桥杯】蓝桥杯第一次海选考试题(5题考试大二)
- Zigbee 获取设备地址信息
- dd实现Linux转移,linux命令-dd {拷贝并替换}
- 关于Javascript 中 setTimeout和setInterval的总结和思考
- 人工智能的发展历史_【走近AI】浅谈人工智能的层次结构。
- 第三百六十节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本概念...
- python迷你停车场管理系统_python实现停车管理系统
- 【重识 HTML + CSS】项目实战
- 使用pt-query-digest进行日志分析
- Java之volatile
- 使用Web Service Interface. (转)
- python pytorch自定义_Pytorch 实现自定义参数层的例子
- 47-高级路由:BGP 镜子实验
- Luogu2564 [SCOI2009]生日礼物
热门文章
- chm文件打开空白无内容的解决办法
- pdfoa-pdf转换成word转换器免费版工具
- 小米手机证书信任设置在哪里_小米手机升级MIUI 12后,记得关闭这4个设置,不然非常耗电...
- C1认证:修改《植物大战僵尸》的文件
- 海天酱油品质创新升级,增强企业实力
- ZOJ 2972 TOJ 1545 Hurdles of 110m(一般dp)
- 容联云发布大语言模型“赤兔”,赋能沟通智能2.0
- 倒计时 jquery countdown
- 【Windows Server 2019】Web服务 IIS 配置与管理——配置 IIS 进阶版 Ⅳ
- 通信原理02:模拟调制