Python版本:python3.6

       使用工具:pycharm

一、第一个爬虫程序

       获得网址源代码。如下图获取百度页面源代码

二、Web请求过程

       1. 服务器渲染:在服务器中直接把数据和html整合在一起,返回给浏览器。(在页面源代码中能看到数据)

       2. 客户端渲染:第一次请求只要一个html骨架,第二次请求拿到数据,进行数据展示。(在页面源代码中,看不到数据)

三、requests入门

       1. 获取搜狗引擎搜索周杰伦页面源代码。

       2. 出现报错,网页存在反爬,处理反扒。

       3. 修改代码,使其更加灵活获取不同搜索内容对应不同页面源代码。

       4.当请求方式为POST时,以百度翻译为例获取页面源代码。

        5. 当想要爬取数据与网页框架不在一起时。以豆瓣电影排行榜为例。需先找到所需爬取数据位置。

将其参数变量进行封装,补充网址参数,其参数信息位置及代码如下:

       注意:使用完爬虫程序后,关闭爬虫程序。

       如上示例需使用resp.close()关闭爬虫程序。

四、数据解析

       本文中将介绍三种解析方式:re解析、bs4解析、xpath解析。

       1. re解析:Regular Expression,正则表达式,一种使用表达式的方式对字符串进行匹配的语法规则。
       优点:速度快、效率高、准确性高

       缺点:上手难度较高

       语法:使用元字符进行排列组合用来匹配字符串(元字符是具有固定含义的特殊符号),常用元字符

       .       匹配除换行符以外的任意字符                            a|b 匹配字符a或b

       \w    匹配字母或数字或下划线                                    \W 匹配非字母或数字或下划线

       \s     匹配任意空白符                                                   \S 匹配非空白符

       \d     匹配数字                                                             \D 匹配非数字

       […]  匹配字符组中的字符                                        [^…] 匹配除字符组中的所有字符

       ^      匹配字符串的开始                                                $  匹配字符串的结束

       量词:控制元字符出现的次数

         *      重复零次或多次

        +      重复一次或多次

        ?     重复零次或一次

       {n}     重复n次

      {n,}     重复n次或更多次

     {n,m}   重复n到m次
     (1)re模块使用,findall() 匹配字符串中所有的符合正则的内容

     (2)finditer()匹配字符串中所有的内容,返回迭代器

       从迭代器中拿出内容需要.group()

     (3)search,找到一个结果就返回,返回的结果是match对象,拿数据需使用.group()

(4)match,从头开始匹配

当选取数据开始即为所需数据时,可输出结果。

(5)预加载正则表达式,可重复使用

(6)正则中内容单独提取。我们将想要提取内容部分定义组(?P<分组名字>正则),然后使用.group()提取某个组的内容。(re.S:让.能够匹配换行符)

        2. 实战爬取豆瓣Top250电影信息。
     (1)使用requests,拿到页面源代码。

(2)使用re,解析数据

设定爬取以上四个数据,电影名字、年份、评分、评价人数,在页面源代码中找到所需内容位置(红色框),并找到内容定位方法及位置(白色框)

解析数据:其中.strip()去掉年份前面空格。

将获取到文件保存为文件。导入csv,将内容存入字典,同理year需单独处理。

输出文件data.csv内容

   3. 实战爬取电影天堂下载链接,目标爬取2021必看热片信息。

(1)获取页面源代码

如上输出结果中存在乱码问题,我们默认使用的字符集为utf-8,可看到其网站的字符集为gb2312,需要指定使用字符集解决乱码问题。

(2)定位到2021必看热片,在页面源代码中找到所需位置。

(3)从2021必看热片中提取到子页面的链接地址

得到的子页面链接不完整,缺少域名,需要进行一个链接的拼接。

得到了完整的子页面链接,将子页面链接保存起来。

提取子页面内容,输出得到片名及下载链接。

python爬虫教程(一)相关推荐

  1. python爬虫抓取图片-简单的python爬虫教程:批量爬取图片

    python编程语言,可以说是新型语言,也是这两年来发展比较快的一种语言,而且不管是少儿还是成年人都可以学习这个新型编程语言,今天南京小码王python培训机构变为大家分享了一个python爬虫教程. ...

  2. python 爬虫实例 电影-Python爬虫教程-17-ajax爬取实例(豆瓣电影)

    Python爬虫教程-17-ajax爬取实例(豆瓣电影) ajax: 简单的说,就是一段js代码,通过这段代码,可以让页面发送异步的请求,或者向服务器发送一个东西,即和服务器进行交互 对于ajax: ...

  3. 爬虫python代码-Python爬虫教程:200行代码实现一个滑动验证码

    Python爬虫教程:教你用200行代码实现一个滑动验证码 做网络爬虫的同学肯定见过各种各样的验证码,比较高级的有滑动.点选等样式,看起来好像挺复杂的,但实际上它们的核心原理还是还是很清晰的,本文章大 ...

  4. 下载 | 9G火爆的Python爬虫教程+ 520页《图解机器学习》

    前段时间,小伙伴多次在后台留言询问Python爬虫教程的问题.经过这两个多月以来的收集与整理,汇集了多个高校以及公开课视频教程,包括python爬虫的入门.进阶与实践,共9G左右.爬虫作为机器学习语料 ...

  5. python读取html_从零开始的Python爬虫教程(一):获取HTML文档

    前言:在上一节从零开始的Python爬虫教程(零):粗识HTML结构中,粗略给大家介绍了一下HTML文档,是为了在接下来的教程中让大家更容易理解和掌握.在接下来的教程中,需要大家提前安装python3 ...

  6. python爬虫代码-Python爬虫教程:200行代码实现一个滑动验证码

    Python爬虫教程:教你用200行代码实现一个滑动验证码 做网络爬虫的同学肯定见过各种各样的验证码,比较高级的有滑动.点选等样式,看起来好像挺复杂的,但实际上它们的核心原理还是还是很清晰的,本文章大 ...

  7. 无敌python爬虫教程学习笔记(一)

    python爬虫系列文章目录 无敌python爬虫教程学习笔记(一) 无敌python爬虫教程学习笔记(二) 无敌python爬虫教程学习笔记(三) 无敌python爬虫教程学习笔记(四) 本文目录 ...

  8. 无敌python爬虫教程学习笔记(二)

    系列文章目录 无敌python爬虫教程学习笔记(一) 无敌python爬虫教程学习笔记(二) 无敌python爬虫教程学习笔记(三) 无敌python爬虫教程学习笔记(四) 手刃一个小爬虫 系列文章目 ...

  9. Python爬虫入门教程:超级简单的Python爬虫教程

    这是一篇详细介绍 [Python]爬虫入门的教程,从实战出发,适合初学者.读者只需在阅读过程紧跟文章思路,理清相应的实现代码,30 分钟即可学会编写简单的 Python 爬虫. 这篇 Python 爬 ...

  10. Python爬虫教程(一):基础知识

    目录 01 基础知识 1.1 渲染 1.2 http(超文本传输协议)协议 1.3 requests进阶 02 数据解析 2.1 re模块 2.2 bs4模块 2.3 xpath模块 01 基础知识 ...

最新文章

  1. java编写socket使用bufferedReader.readLine()问题研究
  2. Python多线程——LOCK锁
  3. 再严重的感冒,马上就好!!
  4. 如何使用Linux的Crontab定时执行PHP脚本的方法
  5. Python超级码力在线编程大赛初赛题解
  6. 发布谷歌离线地图瓦片
  7. python用openpyxl模块操作Excel学习笔记
  8. Hbase的过滤器分类
  9. c盘分小了如何扩大c盘,重新分区扩大c盘
  10. 播放器音视频同步及网络抖动解决方案
  11. net core 微服务 快速开发框架 Viper 初体验
  12. 台式电脑c语言如何安装,台式电脑怎么安装电源 组装机正确安装电源的方法
  13. npm install --save-dev
  14. 电影数据库开发设计——基于jsp(使用eclipse-jee,mysql-front)
  15. 新特性:TabLayout动态添加条目
  16. 安防工程商遇六大挑战考验 能否披荆斩棘?
  17. Linux系统日志管理(redhat)
  18. 我们正处在大数据时代,浅谈大数据
  19. FileZilla Server源码分析(1)
  20. vue自定义指令控制角色权限

热门文章

  1. 201771010119穷吉第八周
  2. suoi46 最大和和 (线段树)
  3. [NOIP 2010普及组 No.3] 导弹拦截
  4. CodeForces-589B(思维/排序)
  5. Base64编码算法
  6. Map与object的区别
  7. angularjs $watch
  8. C — 对C语言的认识
  9. 获取表单提交的数据getParameter()方法
  10. SDUT 2133 数据结构实验之栈三:后缀式求值