Python数据收集入门
工作需要,临时学习一下Python,记录一些学习资料和经验
python3语言入门
菜鸟教程
python3环境
Windows Python3 安装
VSCode扩展
爬虫快速入门
第一步:Get获取网页html
第二步:根据html界面规则,定位提取自己想要的数据
入门实战:使用requests和beautifulsoup4从小说网站爬取并保存小说
需要安装的库:
python库 | 作用 | cmd安装命令 | 文档 |
---|---|---|---|
requests | 发送网络HTTP请求 | pip install requests | docs |
beautifulsoup4 | 从HTML或XML文件中提取数据 | pip install beautifulsoup4 | docs |
进阶实战项目
爬虫框架scrapy
中文文档
方便快捷的爬虫框架,复杂的爬虫规则可能不适用。
cmd安装命令:pip install scrapy
scrapy主要命令
主要命令 | cmdline | 备注 |
---|---|---|
创建项目 | scrapy startproject [exampleproject] | |
创建爬虫 | scrapy genspider [examplespider] [“example.com”] | settings.py所在目录下执行 |
执行爬虫 | scrapy crawl [examplespider] | scrapy.cfg所在目录下执行 |
scrapy实战
scrapy实战:使用scrapy爬取电影网站数据
- 创建scrapy项目
scrapy startproject MovieSpider - 创建爬虫spider
cd MovieSpider
scrapy genspider job_position “ygdy8.net”
job_position是爬虫名,后面运行爬虫时会用到,ygdy8.net是爬取的域范围
MovieSpider├── MovieSpider│ ├── __init__.py│ ├── items.py│ ├── middlewares.py│ ├── pipelines.py│ ├── __pycache__│ ├── settings.py│ └── spiders│ ├── __init__.py│ └── __pycache__│ └── job_position.py└── scrapy.cfg
路径 | 说明 |
---|---|
scrapy.cfg | 项目的总配置文件,通常无须修改。 |
MovieSpider | 项目的 Python 模块,程序将从此处导入 Python 代码。 |
MovieSpider/items.py | 用于定义项目用到的 Item 类。Item 类就是一个 DTO(数据传输对象),通常就是定义 N 个属性,该类需要由开发者来定义。 |
MovieSpider/middlewares.py | 中间件文件,hook爬虫流程一些步骤,如输出数据前过滤掉不想要的数据、或过滤掉失败的请求处理。 |
MovieSpider/pipelines.py | 项目的管道文件,它负责处理爬取到的信息。该文件需要由开发者编写。 |
MovieSpider/settings.py | 项目的配置文件,在该文件中进行项目相关配置。如默认请求头、管道等。 |
MovieSpider/spiders | 在该目录下存放项目所需的蜘蛛,蜘蛛负责抓取项目感兴趣的信息。 |
MovieSpider/spiders/job_position.py | 开发者定义的蜘蛛,开发者在这里设置请求地址和解析数据的规则。 |
- Item.py定义属性
import scrapyclass MoviespiderItem(scrapy.Item):#电影名name = scrapy.Field()#uriuri = scrapy.Field()
- 编写spider类
import scrapy
from MovieSpider.items import MoviespiderItem
#注意在上面导入MoviespiderItem包
class JobPositionSpider(scrapy.Spider):name = 'job_position'allowed_domains = ['ygdy8.net']#这里写上你要爬取的页面start_urls = ['https://www.ygdy8.net/html/gndy/china/index.html']#爬取的方法def parse(self, response):item = MoviespiderItem()#匹配for jobs_primary in response.xpath('//table[@class="tbspan"]'):item['name'] = jobs_primary.xpath ('./tr/td/b/a[2]/text()').extract()item['uri'] = jobs_primary.xpath ('./tr/td/b/a[2]/@href').extract()#不能使用return yield item
- pipelines.py处理Item输出
class MoviespiderPipeline(object):def process_item(self, item, spider):print("name:",item['name'])print("url:",item['url']) #这里就打印出来
- 修改settings.py文件
BOT_NAME = 'MovieSpider'SPIDER_MODULES = ['MovieSpider.spiders']NEWSPIDER_MODULE = 'MovieSpider.spiders'ROBOTSTXT_OBEY = True
# 配置默认的请求头 User-Agent与浏览器一致
DEFAULT_REQUEST_HEADERS = {"User-Agent" : "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0",'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
}
# 配置使用Pipeline 后面的数字是优先级从低到高
ITEM_PIPELINES = {'MovieSpider.pipelines.MoviespiderPipeline': 300,
}
- 运行spider
scrapy crawl job_position
PS:入门实战的例子适用于对静态网页收集数据,动态网页看下一篇。
其他
python文件运行scrapy命令
scrapy.cfg所在目录下添加main.py
from scrapy import cmdline#导入cmdline模块,可以实现控制终端命令行。
import os # 用来设置路径# 获取当前脚本路径
dirpath = os.path.dirname(os.path.abspath(__file__))#切换工作目录
os.chdir(dirpath)cmdline.execute('scrapy crawl job_position'.split())
scrapy.xpath
XPath教程
https://blog.csdn.net/qq_27283619/article/details/88704479
scrapy输出到mongoDB
安装:pip install pymongo
添加输出到mongodb的管道
pipelines.py
from itemadapter import ItemAdapter
import pymongo
from scrapy.utils.project import get_project_settings
#获取settings.py文件中的数据需要导入这个class FirstspiderMongo:def __init__(self):settings = get_project_settings()self.mongo_uri = settings['MONGO_HOST']self.mongo_db = settings['MONGO_DB']self.mongo_port = settings['MONGO_PORT']self.mongo_collection = settings['MONGO_COLL']@classmethoddef from_crawler(cls, crawler):return cls()def open_spider(self, spider):self.client = pymongo.MongoClient(self.mongo_uri,port=self.mongo_port)self.db = self.client[self.mongo_db]def close_spider(self, spider):self.client.close()def process_item(self, item, spider):self.db[self.mongo_collection].insert_one(ItemAdapter(item).asdict())return item#记得将这个管道添加的settings.py中
网络爬虫常用库
https://zhuanlan.zhihu.com/p/81944559
Python数据收集入门相关推荐
- Python数据收集及分析学习相关
Python数据收集及分析学习相关 简介 1.所需要的基础知识 2.个人推荐书籍和网站 2.1 Python基础 2.2 Numpy基础 2.3 Pandas基础 2.4 Matplotlib基础 2 ...
- Python 数据科学入门教程:机器学习:回归
Python 数据科学入门教程:机器学习:回归 原文:Regression - Intro and Data 译者:飞龙 协议:CC BY-NC-SA 4.0 引言和数据 欢迎阅读 Python 机器 ...
- 《Python数据科学入门》之阅读笔记(第2章)
Python数据科学入门 Dmitry Zinoviev著 熊子源 译 第二章 数据科学的Python核心 第4单元 理解基本的字符串函数 大小写转换函数: lower() 将所有字符转换为小写 up ...
- 《Python数据科学入门》之数据库的使用(第4章)
Python数据科学入门 Dmitry Zinoviev著 熊子源 译 第四章 使用数据库 本章介绍了数据库的使用.之前那本<Python爬虫>中有谈到数据库的使用,这里就不再详细介绍.仅 ...
- 有前途的人工智能大数据分析相关职业:Python数据科学入门之路
2019独角兽企业重金招聘Python工程师标准>>> 为什么学习Python数据科学? Python是数据科学职业所需的宝贵技能之一.Python是数据科学的首选编程语言. 201 ...
- python数据科学入门_干货!小白入门Python数据科学全教程
前言本文讲解了从零开始学习Python数据科学的全过程,涵盖各种工具和方法 你将会学习到如何使用python做基本的数据分析 你还可以了解机器学习算法的原理和使用 说明 先说一段题外话.我是一名数据工 ...
- python数据收集整理教案_数据收集整理教案讲解学习
一.数据收集整理 第一课时 教学目标 初步体验数据收集. 整理. 描述的过程, 会用分类数数的方法将数据整理成 简单的统计表, 初步认识统计表, 能正确填写统计表, 能从中获得简单统计的结 果. 通过 ...
- python数据收集整理教案_《数据收集整理(例1)》教案
<数据收集整理(例 1 )>名师教案 中原区伊河路小学 褚瑞婕 一.学习目标 (一)学习内容 <义务教育教科书数学> (人教版) 二年级下册第 2 页例 1 相关内容及做一做. ...
- python数据收集整理教案_数据收集整理教学设计
数据收集整理教学设计 在教学工作者实际的教学活动中,可能需要进行教学设计编写工作,借助教学设计可以更大幅度地提高学生各方面的能力,从而使学生获得良好的发展.那么什么样的教学设计才是好的呢?下面是小编整 ...
最新文章
- Datawhale Ring限量100份来了!
- 记录一次frp失效bug
- .NET Entity Framework入门简介及简单操作
- 1.NetDh框架之数据库操作层--Dapper简单封装,可支持多库实例、多种数据库类型等(附源码和示例代码)...
- 每天一个linux命令(46):vmstat命令
- python自带的shell是什么-python的shell是什么
- 2020-12-29 Matlab自动化控制-Adrc自抗扰控制参数调节
- 【Go API 开发实战 6】基础 2:配置文件读取
- 如何使用Power BI和R脚本创建高级分析
- diffpatch升级_Tinker资源补丁原理解析
- 计算机基础应用教材分析,关于《计算机应用基础》的说课稿一、教材分析(说教材):.pdf...
- 深度学习入门之txt文本文件转换为npz文件
- 你程序员,996这就是你的命
- c语言公交查询系统,公交路线查询系统(基于数据结构和C语言)完整
- 什么!这就是PCB打板!
- vsomeip+*.fidl+*.fdepl(3)
- webRTC(十三):webrtc 统计信息
- 跨利润中心外协业务生成利润中心结算凭证
- zlib-1.2.11.tar.gz
- org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.dxm.mapper.User
热门文章
- 按光在光纤中的传输模式可将光纤分为单模光纤和多模光纤两种
- Android各个版本的区别
- IMP-00017: following statement failed with ORACLE error 20005:(表统计信息被锁)
- Python是个啥?为啥大家都在学?
- C++(标准库):26---STL迭代器之(迭代器的5大种类(输出迭代器、输入迭代器、向前迭代器、双向迭代器、随机访问迭代器))
- 儿童学编程的原因以及方法
- 背景亮度css,用CSS改变背景的亮度
- 考研 研究生 什么是考研 考研的第一课 全面了解考研 研究生
- 备忘录莫名其妙的没了_华为手机总是多出莫名其妙的照片?一键找到源头,教你彻底删除...
- 去哪儿网2015校园招聘笔试面试经历分享