
- 回顾之前的爬虫(八)Scrapy爬虫框架。scrapy爬虫的使用步骤:
- 创建一个工程和spider模板
- 编写spider
- 编写item pipeline
- 优化配置策略
- 为了在推荐系统中不断获取数据,本次task为(新闻推荐实战)数据层—构建物料池之scrapy爬虫框架基础:Scrapy框架有固定的文件结构、类和方法,在实际使用过程中一般是编写item pipelines和spider(里面的自定义爬取器类)两个文件代码。
- 学习总结
- 一、Scrapy的简介与安装
- 1.0 爬虫工具介绍
- (1)requests库
- (2)request爬取网页的通用框架
- (3)Scrapy框架
- 1.1 Scrapy安装
- 1.2 scrapy项目结构
- 二、scrapy项目结构详解
- 2.1 spider的抓取周期
- 2.2 Xpath语言
- (1)xpath路径表达式
- (2)熟悉xpath基本语法
- 三、scrapy爬取新闻内容实战
- 3.1 环境准备:
- 3.2 项目逻辑:
- 1. 创建一个scrapy项目:
- 2. 实现item.py逻辑(敲黑板)
- 3. 实现sina.py (spider)逻辑(敲黑板)
- 4. 数据持久化实现,piplines.py(敲黑板)
- 5. 配置文件,settings.py
- 6. 监控脚本,monitor_news.py
- 7. 运行脚本,run_scrapy_sina.sh
- 8. 运行项目命令
- Reference
python环境的安装:
python 环境,使用miniconda搭建,安装miniconda的参考链接:https://blog.csdn.net/pdcfighting/article/details/111503057。
在安装完miniconda之后,创建一个新闻推荐的虚拟环境,可以将其命名为news_rec_py3,这个环境将会在整个新闻推荐项目中使用。
conda create -n news_rec_py3 python==3.81.0 爬虫工具介绍
需要掌握定向网络数据爬取和网页解析的基本能力。
requests库和scrapy爬虫框架对比:
- 相同点:可用性逗号,文档丰富,入门简单,都没有处理js、提交表单、应对验证码等功能(可扩展)。
- requests:页面级爬虫,有功能库,并发性考虑不足,重点在于页面下载、定制灵活,上手简单;scrapy:网站级爬虫,是框架,并发性好,重点在于爬虫结构;一般定制灵活,深度定制困难。
- 非常小的需求可以用requests库;大一点的需求用scrapy框架,定制程度很高的需求用自搭框架。
get构造一个向服务器请求资源的Requst对象,返回一个包含服务器资源的Response对象。
# -*- coding: utf-8 -*-
"""
Created on Tue Dec 21 09:10:31 2021
@author: 86493
"""
import requests
r=requests.get("http://www.baidu.com")
#检测请求的状态码,200则访问成功
r.status_code
# 200
#如果没有赋值则显示'ISO-8859-1',显示的不是正常字符
r.encoding='utf-8'
r.text
type(r)
# requests.models.Response
r.headers #返回访问页面的头部信息
"""
{'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, no-transform',
'Connection': 'keep-alive',
'Content-Encoding': 'gzip',
'Content-Type': 'text/html',
'Date': 'Tue, 21 Dec 2021 01:10:54 GMT',
'Last-Modified': 'Mon, 23 Jan 2017 13:27:56 GMT',
'Pragma': 'no-cache',
'Server': 'bfe/1.0.8.18',
'Set-cookie': 'BDORZ=27315;
max-age=86400; domain=.baidu.com;
path=/', 'Transfer-Encoding': 'chunked'}
"""
(2)request爬取网页的通用框架
def getHTMLText(url):
try:
r=requests.get(url,timeout=30)
r.raise_for_status() #如果状态不是200,引发HTTPEroor异常
r.encoding=r.apparent_encoding
return r.text
except:
return "产生异常"
if __name__=="__main__":
url="http://www.baidu.com"
print(getHTMLText(url))
检测请求的状态码为200(表示访问成功,如果是404则失败),爬取后返回http响应内容的字符串形式,即百度url对应的页面内容:
百度一下,你就知道 欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)