Python爬虫流程

主要分为三个部分 (1)获取网页-------->(2)解析网页(获取数据)--------->存储数据

三个流程的技术实现

1.获取网页

-获取网页的技术基础:urllib、requests、selenium

-获取网页的进阶技术:多线程抓取、登录抓取、突破ip限制和服务器抓取

2.解析网页

-解析网页的技术基础:re正则表达式、BeautifulSoup和xml

-解析网页的进阶技术:解决中文乱码问题

3.存储数据

-存储数据的基本技术:存入txt文件和存入csv文件

-存储数据的进阶技术:存储mysql、mongoDB数据库中

搭建Python爬虫的平台

Python的安装

集成环境Anaconda的安装

使用pip工具安装第三方库

urllib.request

urllib中,request这个模块主要负责构造和发起网络请求,并在其中加入Headers,Proxy等。

发起GET请求

主要使用urlopen()方法发起请求

from urllib import request

resp = request.urlopen('http://www.baidu.com') type(resp)

print(resp.read().decode()) 数据为二进制数据需转码

发起POST请求

urlopen()默认的访问方式为GET,当在urlopen()方法中传入data参数时,则会发起pose请求

注意:传入的data数据需要为bytes格式

设置timeout参数还可以设置超时时间,如果请求时间超出,那么会抛出异常

from urllib import request

resp = request.urlopen('http://httpbin.org', data=b'word=hello', timeout=10)

print(resp.read().decode())

添加Headers

通过urllib发起的请求会有默认的一个Headers:"User-Agent":Python-urllib/3.6",指明请求是由urllib发送的。

**所以遇到一些验证User-Agent的 网站时,我们需要自定义Headers,而这需要借助于urllib.request中的Request对象。

from urllib import request

url = 'http://httpbin.org/get'

headers = {'user-agent': 'Mozilla/5.0 xxxxxxxxxxxxxxxxxxxxxx'}

**需要使用url和headers生成一个Request对象,然后将其传入urlopen方法中

req = request.Request(url, headers=headers)

resp = request.urlopen(req)

print(resp.read().decode())

Request对象

如上所示,urlopen()方法中不止可以传入字符串格式的url,也可以传入一个Request对象来扩展功能。Request对象如下所示:

class urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)

构造Request对象必须传入url参数, data数据和headers都是可选的。

Request方法可以使用method参数来自由选择请求的方法,如PUT, DELETE等等,默认为GET方法。

添加Cookie

为了在请求时能带上Cookie信息,我们需要重新构造一个opener

使用request.build_opener方法进行构造opener,将我们想要传递的cookie配置到opener中,然后使用这个opener的open方法来发起请求。

User_Agent:

python爬虫流程-Python爬虫流程相关推荐

  1. python爬虫流程-Python爬虫程序架构和运行流程原理解析

    1 前言 Python开发网络爬虫获取网页数据的基本流程为: 发起请求 通过URL向服务器发起request请求,请求可以包含额外的header信息. 获取响应内容 服务器正常响应,将会收到一个res ...

  2. 学python爬虫需要什么基础-从零开始教你学爬虫!python爬虫的基本流程!

    世界那么大,谢谢你来看我!!! 网络爬虫是什么? 网络爬虫就是:请求网站并提取数据的自动化程序 网络爬虫能做什么? 网络爬虫被广泛用于互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面内 ...

  3. [Python爬虫] 二、爬虫原理之定义、分类、流程与编码格式

    往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 一.爬虫的定义.分类和流程 爬虫定义 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求 ...

  4. (二)python网络爬虫(理论+实战)——爬虫分类和基本流程

     小白都能学会的python网络爬虫专栏: https://blog.csdn.net/c1007857613/category_12127982.html 序言 本人从事爬虫相关工作已8年以上,从一 ...

  5. 20行python代码入门网络爬虫全流程:使用BeautifulSoup抓取当日人民银行外汇数据

    网路爬虫是python最重要的应用之一,甚至有很多地方认为python就是用来做网抓的.这里将用大约20行代码展示一个从人民银行官网抓取当日人民币美元汇率的示例来入门这项技术. 和我们平时手动上网寻找 ...

  6. python爬取网页数据流程_Python爬虫爬取数据的步骤

    爬虫: 网络爬虫是捜索引擎抓取系统(Baidu.Google等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 步骤: 第一步:获取网页链接 1.观察需要爬取的多 ...

  7. python 获取用户ip_Python爬虫教程:你还在苦苦拉票吗?刷票小程序案例原理剖析!...

    你还在苦苦拉票吗? 前言 剖析投票原理 处理思路 具体实战 主要流程 具体细节python 代码实例python 具体细节java 代码实现java 总结 点击此处,获取海量Python学习资料! 前 ...

  8. 【python教程入门学习】Python零基础入门爬虫项目

    Python入门爬虫项目 这是我的第一个python项目,分享给大家. 需求 我们目前正在开发一款产品其功能大致是:用户收到短信如:购买了电影票或者火车票机票之类的事件.然后app读取短信,解析短信, ...

  9. python爬虫scrapy框架教程_Python爬虫教程-30-Scrapy 爬虫框架介绍

    从本篇开始学习 Scrapy 爬虫框架 Python爬虫教程-30-Scrapy 爬虫框架介绍 框架:框架就是对于相同的相似的部分,代码做到不出错,而我们就可以将注意力放到我们自己的部分了 常见爬虫框 ...

  10. 爬虫书籍-Python网络爬虫权威指南OCR库 NLTK 数据清洗 BeautifulSoup Lambda表达式 Scrapy 马尔可夫模型

    Python网络爬虫权威指南 编辑推荐 适读人群 :需要抓取Web 数据的相关软件开发人员和研究人员 作为一种采集和理解网络上海量信息的方式,网页抓取技术变得越来越重要.而编写简单的自动化程序(网络爬 ...

最新文章

  1. 根据“坐标”生成趋势图
  2. Facebook增强版LASER开源:零样本迁移学习,支持93种语言
  3. android launcher
  4. python中__name__的使用
  5. Visual Studio原生开发的20条调试技巧
  6. 入局视频会议市场 揭秘“腾讯会议”背后的创新黑科技
  7. dbcp释放不了mysql链接_spring dbcp连接不释放-问答-阿里云开发者社区-阿里云
  8. stm32的rxne和idle中断_STM32 HAL CubeMX 串口IDLE接收空闲中断+DMA
  9. 【Cocos游戏实战】功夫小子第七课之游戏主功能场景逻辑功能和暂停功能场景的分析和实现...
  10. SpringBoot前后端分离登陆验证码实现以及不显示问题
  11. 行政人员为什么需要一套固定资产管理系统?
  12. 投票 java_java实现投票程序设计
  13. iOS 系统方法获取当前位置经纬度
  14. 计算机应用基础数制试题及答案,计算机应用基础试题及答案1.doc
  15. C++笔记005:用面向过程和面向对象方法求解圆形面积
  16. ionic开发中的ion-list设置item右侧的向右箭头
  17. GBase 8a事务控制
  18. 【LC周赛241】1865. 找出和为指定值的下标对
  19. 【红宝书】OpenGL Demo code编译与运行
  20. java调tapd-api获取Bug并发企微通知

热门文章

  1. [NOI2008]志愿者招募
  2. eclipse egit提交方法
  3. 洛谷 P2867 [USACO06NOV]大广场Big Square
  4. (2)java基础继承
  5. 2010年3月4日参加由张应杭老师主讲的关于传统文化的培训-一个有益的PPT分享给大家...
  6. mybatis配置ehcache缓存
  7. 104. Maximum Depth of Binary Tree
  8. VS2013上利用InstallShield2013LimitedEdition/C#生成安装包
  9. 【转】VC MFC 如何删除文件,目录,文件夹
  10. Identity 验证,Authorize 特性