一文入门Python + Selenium动态爬虫

作者介绍:timber ,在一家电子商务(外贸)公司任职运维,平常工作时我觉得敲命令的样子也很帅 ---Python,Changed me!

个人博客地址:

https://blog.csdn.net/weixin_42946604

本文首发于:

https://blog.csdn.net/weixin_42946604

前言

我这里用到了的python+selenium来抓取数据,因爲很多时候分析参数,头疼啊,能分析的还好。有些网页就很变态哦,参数都是经过加密的。

selenium自动化优点(我去找了一下度娘…哈哈),完全可以模拟人工操作网页,而且相对其他爬虫不用写请求头(偷懒),例如直接request的,听说更容易被封(403),我只是听说!

最后希望更大家互勉互力,一同进步!现在跟大家分享一下python selenium的小知识…

整体流程

1、安裝selenium

命令行:pip install selenium 敲回车

2、下載chromedriver插件,對應自己的版本,链接在此:

http://chromedriver.storage.googleapis.com/index.html

直接放在Python的Scripts目录下就可以不能配置变量了,而且也不用声明路径

(后面会说到)

3、安裝pyquery 一样的用到pip安装 敲回车

命令行:pip install pyquery

4、安裝pymysql

命令行:pip install pymysql 同上

5、以上安裝完成后,开始我們的骚操作了。

网页分析

我们不用声明请求头还有分析一些参数了,只要我们拿到URL,指哪爬哪! 此次抓取的数据如下:

那这些数据的提取正题就来了! 打开开发者工具,google浏览器直接挫F12

发现每个小区的售房信息都在ul下的li标签里面。直接上代码

第一步拿到html结构,然后用pyquery解析遍历li标签,我使用了items()方法

提取小区名称,找到a标签的class

提取房类的文本,span标签下面

其他的TEXT文本都是这样的方法提取 提醒的一点就是

我们这里判断一下ul的class,防止有时候网络加载的问题,导致发生错误。

模拟滚动,点击下一步操作

我们没跳转一页就滚动一下滚动条,这个有好处的哦有时候很多异步加载的,例如一下ajax加载的就是很好的例子了,查看评论的时候很多是这样的!我们来看一下

这也是个方法,根据个人不同来定义,我这里以800来滚动。 然后就是点击下一页的动作,网页有下一页的

代码实现 直接上图

一些其他的小动作,可以自己添加哦!

数据存储

我这里用mysql存放数据,上图

我提前把数据表建好了的,表名为lianjie_data,数据库名是lianjie,这里根据个人情况。 你可以写一个data_save的方法,我这里简单粗暴点从上到下直接写完了。 好了运行程序

数据展示

是不是完完全全模拟人工操作呢,其实我没加太多动作 嘻嘻 源码后续放出来,也会写一些更多的小知识更大家分享

本文分享自微信公众号 - 数据森麟(shujusenlin)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-01-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏授客的专栏

SQLServer 学习笔记之超详细基础SQL语句 Part 12(The End)

-----------------------接Part 11-------------------

7720
来自专栏学无止境

Python:正则表达式 re 模块

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回 None。

11020
来自专栏PHP修行之路

GoAccess 视图化access.log 日志

14020
来自专栏菩提树下的杨过

pygame-KidsCanCode系列jumpy-part8-记录历史最高分

通常在多玩家的游戏中,每个玩家都会有自己的得分,最高分数会成为该游戏的最佳记录。这一篇,学习下如何记录最高得分:(为了简化代码,本文采用文件方式,仅记录本机得分...

10910
来自专栏学无止境

Python:游戏:扫雷(附源码)

这次我们基于 pygame 来做一个扫雷,上次有园友问我代码的 python 版本,我说明一下,我所有的代码都是基于 python 3.6 的。

37420
来自专栏菩提树下的杨过

pygame-KidsCanCode系列jumpy-part9-使用spritesheet

做过前端的兄弟应该都知道css sprite(也称css精灵),这是一种常用的减少http请求次数的优化手段。把很多小图拼成一张大图,只加载1次,然后用css定...

10650
来自专栏Flink实战应用指南

Protobuf介绍和整合SpringBoot

1.服务之间的调用,协议部分,我们统一采用二进制协议protobuf over HTTP,协议版本统一采用protobuf3,接口定义语言教材:

53020
来自专栏学无止境

Python:游戏:测试打字速度

最近迷恋 Python 游戏,买了《Python游戏编程入门》[美] Jonathan S·Harbour 著 一书来看。

18520
来自专栏申城异乡人

Java SimpleDateFormat处理日期与字符串的转换

在Java中,如果我们想获取当前时间,一般会使用Date类的无参构造函数,如下所示,我们获取到当前时间并输出:

9610
来自专栏授客的专栏

SQLServer 学习笔记之超详细基础SQL语句 Part 2

-----------------------接Part 1-------------------

7720

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励