使用scrapy简单爬取网易新闻
已经安装scrapy的跳过
1.scrapy的安装和项目的创建
安装scrapy
pip install scrapy
项目的创建
在Termianl中输入scrapy startproject 项目名字回车,然后cd 项目名字回车
创建一个爬虫文件输入scrapy genspider 文件名 地址 例如(scrapy genspider wy www.com)
2.流程
3项目实施
我们需要获取国内国际等模块的url,打开网站,按F12或者右击鼠标检查,定位到国内。我们需要获取的就是a标签下的herf的属性值。
获取各模块的url,我们可以知道所有的模块都在ul标签下,这就需要我们获取ul标签下所有的li标签,然后进行xpath解析出各个模块的url.
处理代码:
def parse(self, response):#获取ul标签下所有的li标签lists=response.xpath('//*[@id="index2016_wrap"]/div[2]/div[2]/div[2]/div[2]/div/ul/li')for num in range(1,3):#获取需要访问板块的urlmode_url=lists[num].xpath('./a/@href').extract_first()self.mode_urls.append(mode_url)#依次访问每个板块for url in self.mode_urls:yield scrapy.Request(url,callback=self.title)
由于接下来的的请求是动态加载,我们需要实实例化一个浏览器对象,然后在中间件中修改响应对应。路径为自己浏览器驱动的地址
实例化代码:
def __init__(self):#初始化一个webself.web=webdriver.Firefox(executable_path='C:/Users/Administrator/PycharmProjects/venv/Scripts/geckodriver.exe')
middlewares.py文件中代码:
def process_response(self, request, response, spider):web=spider.webif request.url in spider.mode_urls:web.get(request.url)time.sleep(2)page_text=web.page_source#包含动态加载数据#针对定位到这些response进行篡改#s实例化一个新的响应对象(符合需求:包含动态加载出的新闻数据) 替代原来旧的响应对象new_response=HtmlResponse(url=request.url,body=page_text,encoding='utf-8',request=request)return new_responseelse:return response
解析数据
所有的新闻标题在选中的div标签下,复制xpath,解析出文章的标题和详情页的url
获取标题代码:
def title(self,response):#获取包含每个标题的div标签detail_list=response.xpath('/html/body/div/div[3]/div[3]/div[1]/div[1]/div/ul/li/div/div')for it in range(1,6):#获取标题和文章的urltitle=detail_list[it].xpath('./div/div[1]/h3/a/text()').extract_first()detail_url=detail_list[it].xpath('./div/div[1]/h3/a/@href').extract_first()#进行管道存储# item=WyItem()# item['title']=title#yield scrapy.Request(url=detail_url, callback=self.content,meta={'item':item})yield scrapy.Request(url=detail_url,callback=self.content)
获取文章
def content(self,response):#获取文章内容#normalize-space()去除文本中的前后空格和回车contents=response.xpath('normalize-space(/html/body/div[3]/div[1]/div[3]/div[2])').extract_first()print(contents)# item=response.meta['item']# item['contents']=contents# yield item
最后关闭浏览器
def closed(self,spider):#关闭浏览器self.web.quit()
setting文件设置
完整代码图
未展开
运行代码:scrapy crawl 你的爬虫文件名
运行效果图:
最后有什么疑问请在评论区留言吧!
使用scrapy简单爬取网易新闻相关推荐
- scrapy获取a标签的连接_python爬虫——基于scrapy框架爬取网易新闻内容
python爬虫--基于scrapy框架爬取网易新闻内容 1.需求[前期准备] 2.分析及代码实现(1)获取五大板块详情页url(2)解析每个板块(3)解析每个模块里的标题中详情页信息 点击此处,获取 ...
- 19. python爬虫——基于scrapy框架爬取网易新闻内容
python爬虫--基于scrapy框架爬取网易新闻内容 1.需求 [前期准备] 2.分析及代码实现 (1)获取五大板块详情页url (2)解析每个板块 (3)解析每个模块里的标题中详情页信息 1.需 ...
- 利用scrapy框架爬取网易新闻排行榜
wyxw.py中代码 # -*- coding: utf-8 -*- import scrapy from ..items import WyxwItemclass WyxwSpider(scrapy ...
- Python爬取网易新闻,就是这么简单!
此文属于入门级级别的爬虫,老司机们就不用看了. 本次主要是爬取网易新闻,包括新闻标题.作者.来源.发布时间.新闻正文. 首先我们打开163的网站,我们随意选择一个分类,这里我选的分类是国内新闻.然后鼠 ...
- 【python 爬虫】 scrapy 入门--爬取百度新闻排行榜
scrapy 入门–爬取百度新闻排行榜 环境要求:python2/3(anaconda)scrapy库 开发环境:sublime text + windows cmd 下载scrapy(需要pytho ...
- 如何利用python爬取网易新闻
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: LSGOGroup PS:如有需要Python学习资料的小伙伴可以 ...
- python爬网易新闻_爬虫基本介绍 python3 爬虫爬取网易新闻排行榜
爬虫基本介绍 1. 什么是爬虫? 爬虫是请求⽹网站并提取数据的⾃自动化程序 2. 爬虫的基本流程 发起请求 通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers ...
- Python+beautifulsoup+requests 爬取网易新闻评论
前段时间在看处理数据相关的书籍,实践中需要一些网上评论的文本数据集,所以想到爬取网易新闻底下的评论.本来想着Python+beautifulsoup(解析)+requests(抓取),最后存储在txt ...
- python爬取热门新闻每日排行_爬取网易新闻排行榜
#网络爬虫之最基本的爬虫:爬取[网易新闻排行榜](http://news.163.com/rank/) **一些说明:** * 使用urllib2或requests包来爬取页面. * 使用正则表达式分 ...
最新文章
- java junit 运行_appium+java+junit demo运行
- 交换基本数据类型的方法swap,并影响到主方法
- Hyperledger Fabric 私有数据(3)交易流程
- epoll 接口以及原理说明
- 用java爬虫来提高CSDN博客访问量,浏览量
- 还被python收智商税?做大数据的朋友告诉我月薪2w的方法
- Rabbit MQ 安装
- dis 密集光流_密集光流估计的自监督注意力机制
- 解决“ssh服务器拒绝了密码 请再试一次”问题
- HTMLifier将scratch游戏打包为html文件
- input中使用pattern属性
- Mint-ui MessageBox.confirm 确定和取消事件
- java的if 、if else、while、do while、switch、for执行语句
- MacOS 安装跨平台加密工具 VeraCrypt
- 【论文阅读】2021中国法研杯司法考试数据集研究(CAIL2021)
- 中国数据标注公司排名前十强有哪些?
- 导数的几何意义和物理意义, 求曲线y=f(x) 在相应点处的切线方程,法线方程
- PostGIS 笔记
- 基于Python+Open CV的手势识别算法设计
- VR全景制作拍摄方法教程