Scrapy自动爬虫(crawl模板)【scrapy genspider -t crawl news news.sina.com.cn】

Crawl自动爬虫适用:

对有规律的网站进行自动爬取

Crawl自动爬虫总体思路:

  1. 先获取初始网址,获取初始网址中的所有链接,筛选出目标链接并进行访问
  2. 从访问的链接中返回需要的信息
  3. 在访问的链接中重复(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自动爬虫【获取新浪新闻为例】相关推荐

  1. 使用Pull解析XML获取新浪新闻

    目标是获取新浪新闻如图所示位置的头条新闻数据: 思路是这样的,先访问这个首页拿到这个部分每一条新闻的url,然后再逐一访问这些详情页面,从详情页面获取标题正文图片等数据. 1.通过HttpUrlCon ...

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

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

  3. 【API爬虫】30分钟百万条新浪新闻信息爬取。python得极速之旅

    请参考源码,文字是最先得想法,没有再做更改.源码以更新 前期准备:requests库:使用pip install requests 安装. pymongo库:使用pip install pymongo ...

  4. python爬虫新浪新闻_python爬虫之获取新浪新闻信息

    一:前言 windows平台: 1):谷歌的chrome浏览器:python3.6的软件安装包,需要导入的库有: [python]  view plain copy pip install reque ...

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

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

  6. 19Python爬虫--爬取新浪新闻标题并保存到数据库

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

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

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

  8. 多线程新浪新闻搜索网络爬虫-基于关键字

    本文为原创博客,仅供技术学习使用.未经允许,禁止将其复制下来上传到百度文库等平台.如有转载请注明本文博客的地址(链接) 源码获取请联系:1563178220@qq.com 简介 互联网有海量的新闻,如 ...

  9. 爬虫实战操作(2)—— 新浪新闻内容细节

    本文实现获取新浪新闻内容的各种细节,标题.时间.来源.内文.编辑者.评论数. import requests from bs4 import BeautifulSoup res=requests.ge ...

最新文章

  1. 插件化知识梳理(7) 类的动态加载入门
  2. matlab手动抠取圆形区域_利用Photoshop通道工具扣取人物头发教程-PS抠图
  3. Ascii码 、16进制与 char
  4. Shell 输入/输出重定向
  5. 跟vczh看实例学编译原理——二:实现Tinymoe的词法分析
  6. 怪物行为树案例_Behavior Designer行为树(简单实现巡逻)
  7. 【2022年蓝桥杯】蓝桥杯第一次海选考试题(5题考试大二)
  8. Zigbee 获取设备地址信息
  9. dd实现Linux转移,linux命令-dd {拷贝并替换}
  10. 关于Javascript 中 setTimeout和setInterval的总结和思考
  11. 人工智能的发展历史_【走近AI】浅谈人工智能的层次结构。
  12. 第三百六十节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本概念...
  13. python迷你停车场管理系统_python实现停车管理系统
  14. 【重识 HTML + CSS】项目实战
  15. 使用pt-query-digest进行日志分析
  16. Java之volatile
  17. 使用Web Service Interface. (转)
  18. python pytorch自定义_Pytorch 实现自定义参数层的例子
  19. 47-高级路由:BGP 镜子实验
  20. Luogu2564 [SCOI2009]生日礼物

热门文章

  1. chm文件打开空白无内容的解决办法
  2. pdfoa-pdf转换成word转换器免费版工具
  3. 小米手机证书信任设置在哪里_小米手机升级MIUI 12后,记得关闭这4个设置,不然非常耗电...
  4. C1认证:修改《植物大战僵尸》的文件
  5. 海天酱油品质创新升级,增强企业实力
  6. ZOJ 2972 TOJ 1545 Hurdles of 110m(一般dp)
  7. 容联云发布大语言模型“赤兔”,赋能沟通智能2.0
  8. 倒计时 jquery countdown
  9. 【Windows Server 2019】Web服务 IIS 配置与管理——配置 IIS 进阶版 Ⅳ
  10. 通信原理02:模拟调制