工作需要,临时学习一下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爬取电影网站数据

  1. 创建scrapy项目
    scrapy startproject MovieSpider
  2. 创建爬虫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 开发者定义的蜘蛛,开发者在这里设置请求地址和解析数据的规则。
  1. Item.py定义属性
import scrapyclass MoviespiderItem(scrapy.Item):#电影名name = scrapy.Field()#uriuri = scrapy.Field()
  1. 编写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
  1. pipelines.py处理Item输出
class  MoviespiderPipeline(object):def process_item(self, item, spider):print("name:",item['name'])print("url:",item['url']) #这里就打印出来
  1. 修改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,
}
  1. 运行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数据收集入门相关推荐

  1. Python数据收集及分析学习相关

    Python数据收集及分析学习相关 简介 1.所需要的基础知识 2.个人推荐书籍和网站 2.1 Python基础 2.2 Numpy基础 2.3 Pandas基础 2.4 Matplotlib基础 2 ...

  2. Python 数据科学入门教程:机器学习:回归

    Python 数据科学入门教程:机器学习:回归 原文:Regression - Intro and Data 译者:飞龙 协议:CC BY-NC-SA 4.0 引言和数据 欢迎阅读 Python 机器 ...

  3. 《Python数据科学入门》之阅读笔记(第2章)

    Python数据科学入门 Dmitry Zinoviev著 熊子源 译 第二章 数据科学的Python核心 第4单元 理解基本的字符串函数 大小写转换函数: lower() 将所有字符转换为小写 up ...

  4. 《Python数据科学入门》之数据库的使用(第4章)

    Python数据科学入门 Dmitry Zinoviev著 熊子源 译 第四章 使用数据库 本章介绍了数据库的使用.之前那本<Python爬虫>中有谈到数据库的使用,这里就不再详细介绍.仅 ...

  5. 有前途的人工智能大数据分析相关职业:Python数据科学入门之路

    2019独角兽企业重金招聘Python工程师标准>>> 为什么学习Python数据科学? Python是数据科学职业所需的宝贵技能之一.Python是数据科学的首选编程语言. 201 ...

  6. python数据科学入门_干货!小白入门Python数据科学全教程

    前言本文讲解了从零开始学习Python数据科学的全过程,涵盖各种工具和方法 你将会学习到如何使用python做基本的数据分析 你还可以了解机器学习算法的原理和使用 说明 先说一段题外话.我是一名数据工 ...

  7. python数据收集整理教案_数据收集整理教案讲解学习

    一.数据收集整理 第一课时 教学目标 初步体验数据收集. 整理. 描述的过程, 会用分类数数的方法将数据整理成 简单的统计表, 初步认识统计表, 能正确填写统计表, 能从中获得简单统计的结 果. 通过 ...

  8. python数据收集整理教案_《数据收集整理(例1)》教案

    <数据收集整理(例 1 )>名师教案 中原区伊河路小学 褚瑞婕 一.学习目标 (一)学习内容 <义务教育教科书数学> (人教版) 二年级下册第 2 页例 1 相关内容及做一做. ...

  9. python数据收集整理教案_数据收集整理教学设计

    数据收集整理教学设计 在教学工作者实际的教学活动中,可能需要进行教学设计编写工作,借助教学设计可以更大幅度地提高学生各方面的能力,从而使学生获得良好的发展.那么什么样的教学设计才是好的呢?下面是小编整 ...

最新文章

  1. Datawhale Ring限量100份来了!
  2. 记录一次frp失效bug
  3. .NET Entity Framework入门简介及简单操作
  4. 1.NetDh框架之数据库操作层--Dapper简单封装,可支持多库实例、多种数据库类型等(附源码和示例代码)...
  5. 每天一个linux命令(46):vmstat命令
  6. python自带的shell是什么-python的shell是什么
  7. 2020-12-29 Matlab自动化控制-Adrc自抗扰控制参数调节
  8. 【Go API 开发实战 6】基础 2:配置文件读取
  9. 如何使用Power BI和R脚本创建高级分析
  10. diffpatch升级_Tinker资源补丁原理解析
  11. 计算机基础应用教材分析,关于《计算机应用基础》的说课稿一、教材分析(说教材):.pdf...
  12. 深度学习入门之txt文本文件转换为npz文件
  13. 你程序员,996这就是你的命
  14. c语言公交查询系统,公交路线查询系统(基于数据结构和C语言)完整
  15. 什么!这就是PCB打板!
  16. vsomeip+*.fidl+*.fdepl(3)
  17. webRTC(十三):webrtc 统计信息
  18. 跨利润中心外协业务生成利润中心结算凭证
  19. zlib-1.2.11.tar.gz
  20. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.dxm.mapper.User

热门文章

  1. 按光在光纤中的传输模式可将光纤分为单模光纤和多模光纤两种
  2. Android各个版本的区别
  3. IMP-00017: following statement failed with ORACLE error 20005:(表统计信息被锁)
  4. Python是个啥?为啥大家都在学?
  5. C++(标准库):26---STL迭代器之(迭代器的5大种类(输出迭代器、输入迭代器、向前迭代器、双向迭代器、随机访问迭代器))
  6. 儿童学编程的原因以及方法
  7. 背景亮度css,用CSS改变背景的亮度
  8. 考研 研究生 什么是考研 考研的第一课 全面了解考研 研究生
  9. 备忘录莫名其妙的没了_华为手机总是多出莫名其妙的照片?一键找到源头,教你彻底删除...
  10. 去哪儿网2015校园招聘笔试面试经历分享