目录

0、爬虫介绍

一、静态文件抓取(响应文件中存在的数据)

二、动态文件抓取(响应文件中不存在的数据)

三、多线程数据抓取

四、爬虫数据存数据库,存缓存的思路

五、Python爬虫程序常用的解析模块

六、爬虫框架


该篇文章有助于初学者理清网络爬虫的思路,文章内容并不深奥,主要以案例的形式帮助大家学习爬虫程序,学会这些基本的工具后,你的爬虫之路才刚刚开始。文章内容均来源于我博客里有关python爬虫的篇章,更多的内容可以参考我博客里网络爬虫这个分栏。特别注意:如果要转载请注明出处。

0、爬虫介绍

做任何一件事情之前先搞清楚你为什么要做,可以通过什么方式去做。

网络爬虫入门:网络爬虫的目的,企业获取数据的方式,可以用于做爬虫的程序语言,爬虫爬取数据的步骤

一、静态文件抓取(响应文件中存在的数据)

大部分的数据都是直接写在静态文件上的,静态文件这里通常指的一定时间内不会变化的,不需要与后台进行交互的网页。

1.首先确认抓取的数据是否存在于响应文件中

2.分析页面结构,观察URL地址规律

1)查看网页元素的布局,整体结构预览,常用控制台来分析

2)查看在浏览网页(比如翻页)时元素结构是否发生变化

3)查看页面跳转时URL地址是否变化(判断是否发生请求转发或重定向),如果有则去JS代码中找变化的原因

3.开始编写代码进行数据抓取

4.开始写自己的第一个爬虫程序

Python爬虫入门,最简单的爬虫代码,网站如何判断是人为的操作还是爬虫程序的操作,为url参数中的中文参数进行编码,基于百度搜索的爬虫程序

做完上面的案例后,可以再做一个案例练练手。Python爬虫小程序,爬取百度贴吧网页文件,新手练手的好案例

5.多级页面爬取思路

上面两个案例都是爬取一级页面的,一级页面指的是打开某个网页,仅仅对该网页上的内容做数据爬取,而二级页面就是在一级页面的基础上,你点击一个内容,这个内容往往是一个连接,它带你来到了另一个页面,这就是二级页面。在做爬虫时一般是先下载一级页面,这个页面没有我们要爬的数据,但是它包含了存储我们要的数据的网站的链接,收集所有链接后,我们拥有了所有的二级页面,也就拥有了所有数据,这时候你再到二级页面去爬数据即可。有二级页面也有三级页面四级页面,但是原理都是一样的。

我们再来看看如何爬取二级页面的内容

Python爬虫,4567电影网电影信息爬取,二级页面处理方案

二、动态文件抓取(响应文件中不存在的数据)

这一部分的数据不是存在响应内容中,而是存在Ajax的XML文件或者JS文件中,而且它随着你的操作而动态变化。

1.如果发现想要的内容不再响应文件中,大可能性是使用Ajax动态生成的

2.F12进入控制台抓包,刷新页面或执行某些行为,查看XHR异步加载的数据包内容

1)GET请求:查看Request Headers请求头,查看请求头是如何做的,是否需要伪装请求头。

查看Query String Paramters,查看请求参数,这些参数多包含在URL中

2)Post请求:查看Request Headers请求头,查看请求头是如何做的,是否需要伪装请求头。

查看FormData表单数据,看post发送请求时封装了哪些数据,这些数据哪些是动态的哪些是静态的,动态再进一步分析如何生成(主要通过分析JS代码)

3.观察查询参数或者Form表单数据规律,如果需要进行进一步抓包分析处理,应当去分析JS文件

4.使用request.get().json()获取json数据,利用列表或字典的方法提取数据

三、多线程数据抓取

1.将待爬取的URL放入队列中

需要使用到的模块有:from queue import Queue

2.多个线程从队列中取出地址,调用requests模块获取文件

需要用到的模块有:from threading import Thread

3.在进行I/O读写的时候注意加锁

需要用到的模块有:from threading import Lock

4.调取队列url地址的两种写法

当队列值为空时,线程再去做请求会陷入阻塞,所以要为队列做判空操作或者加抛异常

方式一:判断队列是否为空,避免线程堵塞

while True:

if not q.empty():

url=q.get()

else:

break

方式二:超时抛异常

try:

url=q.get(block=True,timeout=5)

....

except Exception as e:

break

5.多线程争抢共同文件时的操作

多线程写入文件时不加线程锁会导致一系列问题

方法如下:

from threading import Lock

lock=Lock()

lock.acquire() #加锁

代码块

local.relase() #释放

案例:

Python多线程爬虫,腾讯招聘网职位爬取程序,Ajax异步数据爬取模板

四、爬虫数据存数据库,存缓存的思路

此内容会在将来补上..

五、Python爬虫程序常用的解析模块

pythoy一般用于解析页面的模块用re、lxml+xpath、json,以下是用法

1.re

re通过正则表达式来获取想要得到的内容,核心在于如何编写正则表达式

python正则表达式re模块入门,贪婪匹配和非贪婪匹配,案例:猫眼电影TOP100信息提取

2.lxml+xpath

lxml+xpath是通过编写xpath,然后使用lxml来解析xpath进行匹配,需要知道xpath的规则(教程):

Python常用插件类举,lxml+Xpath实现爬虫,使用Xpath爬取链家二手房源信息

3.ajax/json 

json一般是ajax动态数据,请求得到ajax响应内容后,将它json化,再进一步处理,如存库,存缓存

Python多线程爬虫,腾讯招聘网职位爬取程序,Ajax异步数据爬取模板

4.pyexecjs

python爬虫程序之百度翻译,pyexecjs模块的用法(python里的js解析库)

六、爬虫框架

1.Selenium

Selenium严格意义上来讲并不是一个框架,他与传统爬虫不一样,Selenium更像是一个模拟人类操作的机器人,简单点来说就是你打开一个网页,比如起点小说网,里面有非常多的小说,你想感兴趣的小说都复制到本地,人为来做这件事是不太可能的,一篇小说短则几百篇,长则几千上万篇,你一篇一篇的复制可能吗?这时候你可以写一个Selenium爬虫程序,模拟你的行为:打开网页,点击一篇小说,打开第一章,复制第一章,关闭网页,打开第二章,复制第二章.....直到最后一章。Selenium就是在做这样一件事,并且这些操作都是可视化的(你能看到它在做这件事),这是与传统爬虫差别最大的地方。

Selenium+ChromeDriver框架,Selenium入门,百度搜索,猫眼电影,京东商城案例

2.Scrapy框架

Scrapy是目前python最为流行的框架,这个框架帮我们做了很多前期工作,省去了重复编写的麻烦,最关键的是为爬虫程序提供了一套可行的框架,尽可能做到了解耦,使团队编程成为可能,如果要做python爬虫,Scarpy是必须掌握的。

教程:

Scrapy爬虫框架,入门案例(非常详细),Scrapy多线程思路

Python网络爬虫数据抓取思路,静态与动态页面爬取思路,爬虫框架等相关推荐

  1. 基于python爬虫————静态页面和动态页面爬取

    基于python爬虫----静态页面和动态页面爬取 文章目录 基于python爬虫----静态页面和动态页面爬取 1. 爬虫的原理 2. 用正则表达式匹配获取数据 3. 页面源码解析 4. 通过req ...

  2. Python爬虫: 单网页 所有静态网页 动态网页爬取

    Python爬虫: 单网页 所有静态网页 动态网页爬取 前言:所有页代码主干均来自网上!!!感谢大佬们. 其实我对爬虫还挺感兴趣的,因为我玩instagram(需要科学上网),上过IG的人都知道IG虽 ...

  3. java spring+mybatis整合实现爬虫之《今日头条》搞笑动态图片爬取

    java spring+mybatis整合实现爬虫之<今日头条>搞笑动态图片爬取(详细) 原文地址原博客地址 先上效果图 抓取的动态图: 数据库: 一.此爬虫介绍 今日头条本身就是做爬虫的 ...

  4. python网络数据爬取及分析_《Python网络数据采集》读后总结--第3章开始爬取数据及天善用户关系分析实例...

    这次介绍一下<Python网络数据采集>这本书的第3章内容(Chpt03.开始爬数据的内容), 使用了天善用户关系分析的示例来介绍一下具体实践. 1.第3章内容简介 1-getWikiLi ...

  5. python爬取今日头条后台数据_Python爬虫实战入门五:获取JS动态内容—爬取今日头条...

    之前我们爬取的网页,多是HTML静态生成的内容,直接从HTML源码中就能找到看到的数据和内容,然而并不是所有的网页都是这样的. 有一些网站的内容由前端的JS动态生成,由于呈现在网页上的内容是由JS生成 ...

  6. python爬虫爬取今日头条_Python爬虫实战入门五:获取JS动态内容—爬取今日头条...

    之前我们爬取的网页,多是HTML静态生成的内容,直接从HTML源码中就能找到看到的数据和内容,然而并不是所有的网页都是这样的. 有一些网站的内容由前端的JS动态生成,由于呈现在网页上的内容是由JS生成 ...

  7. python爬取今日头条热点新闻事件,Python爬虫实战入门五:获取JS动态内容—爬取今日头条...

    之前我们爬取的网页,多是HTML静态生成的内容,直接从HTML源码中就能找到看到的数据和内容,然而并不是所有的网页都是这样的. 有一些网站的内容由前端的JS动态生成,由于呈现在网页上的内容是由JS生成 ...

  8. python爬虫动态解析js_Python爬虫实战入门五:获取JS动态内容—爬取今日头条

    F12打开网页调试工具: 选择"网络"选项卡后,发现有很多响应,我们筛选一下,只看XHR响应.(XHR是Ajax中的概念,表示XMLHTTPrequest)然后我们发现少了很多链接 ...

  9. 爬虫:动态页面爬取Selenium

    Ajax其实也是JavaScript动态渲染的页面的一种情形,不过JavaScript 动态渲染的页面不止Ajax 这一种: 比如中国青年网(详见 http://news.youth.cn/gn/ ) ...

  10. 头条的动态页面爬取+百度下拉搜索框

    写了一个简单的头条动态页面爬取代码. 比如想获取这些图片或者title,但是直接open('https://www.toutiao.com/search/?keyword=%E7%8C%AB'),什么 ...

最新文章

  1. 基础拾遗(1):字符(串)数字互转
  2. python装饰器类-Python装饰器15-开始使用类作为装饰器
  3. OpenCV 车道线提取
  4. 【测试】更新红外遥控信号读取,用示波器抓取红外遥控器NEC信号
  5. AT89C51 单片机在电话远程控制器中的应用
  6. Wecoach陈隽永:如何打造一款完美的智能硬件App?
  7. 句柄 matlab_matlab 整车仿真
  8. 面试 | 你说你熟悉MySql,那你就来谈谈InnoDB如何解决幻读的?
  9. 互联网公司大厂中厂小厂分别指哪些公司?
  10. ubuntu编译安装vim7.4
  11. 韩顺平的php东方航空_韩顺平PHP从入门到精通视频教程
  12. innodb system table
  13. 萨达阿萨德发送到在线橙V
  14. 1964年第一代电子计算机,电子计算机的发展
  15. pat 1026C语言
  16. java实现Runnable接口启动线程
  17. python爬取网站源代码+图片
  18. ORB-SLAM2系列第三章—— 地图初始化
  19. 动画云创始人胥克谦课程格子创始人李天放分享创业经历
  20. Kindle 原生系统阅读坚排pdf扫描版电子书———基于K2pdfopt重排

热门文章

  1. FPGA自学:利用D触发器实现分频
  2. python控制本地音乐播放器_如何使用python控制音乐播放器
  3. ftp 创建工具下载,三款ftp 创建工具下载-免安装版(亲测)
  4. 计算机的生产过程,笔记本电脑生产流程介绍 .pptx
  5. javascript开发植物大战僵尸网页版游戏源代码下载
  6. 企业oa系统是什么,有什么好用的办公软件推荐?
  7. html+上下标+遇乘号无效,html中的特殊符号
  8. 弹性均质圆环法计算过程_均质圆环胎刚体的转动惯量
  9. struts2 通配符的配置方式
  10. 基于ssm+java+sql企业名录综合统计系统