但不管怎样,爬虫技术是无罪的,还是值得我们开发人员去学习了解一下的。在学习之前,我们还是要先了解一下相关概念。

什么是爬虫

网络爬虫:又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。

大数据时代,要进行数据分析,首先要有数据源,可数据源从哪里来,花钱买,没预算,只能从其它网站就行抓取。

细分下来,业内分为两类:爬虫和反爬虫。

反爬虫:顾名思义,就是防止你来我网站或APP上做爬虫的。

爬虫工程师和反爬虫工程师是一对相爱相杀的小伙伴,经常因为对方要加班写代码,甚至丢掉工作。比如下面这张图,大家用心感受一下:

爬虫的基本原理

如上图所示,爬虫的第一个步骤就是对所要爬取的网页进行请求,以获取其相应返回的结果,然后在使用一些方法,对响应内容解析,提取想要的内容资源,最后,将提取出来的资源保存起来。

入门Python其实很容易,但是我们要去坚持学习,每一天坚持很困难,我相信很多人学了一个星期就放弃了,为什么呢?其实没有好的学习资料给你去学习,你们是很难坚持的,这是小编收集的Python入门学习资料关注,转发,私信小编“01”,即可免费领取!希望对你们有帮助

爬虫工具和语言选择

一、爬虫工具

工欲善其事必先利其器的道理相信大家都懂的,想要提升效率,一些常用的工具是必不可少的,以下就是个人推荐的几款工具: Chrome、Charles、Postman、Xpath-Helper

二、爬虫语言

目前主流的Java、Node.js、C#、python等开发语言,都可以实现爬虫。

所以,在语言的选择上,你可以选择最擅长的语言来进行爬虫脚本的编写。

目前爬虫这块用的最多的是python,因为python语法简洁,方便修改,而且python里有多爬虫相关的库,拿过来就可以使用,网上的资料也比较多。

Python 爬虫Selenium库的使用

一、基础知识

首先要使用python语言做爬虫,需要学习一下python的基础知识,还有HTML、CSS、JS、Ajax等相关的知识。 这里,列出python中一些与爬虫相关的库和框架:

1.1、urllib和urllib2
1.2、Requests
1.3、Beautiful Soup
1.4、Xpath语法与lxml库
1.5、PhantomJS
1.6、Selenium
1.7、PyQuery
1.8、Scrapy
......
复制代码

因为时间有限,本文只介绍Selenium库的爬虫技术,像自动化测试,还有其它库和框架的资料,感兴趣的小伙伴可以自行学习。

二、Selenium基础

2.1、Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。

2.2、安装方式

pip install Selenium
复制代码

2.3、Selenium定位元素的8种方式

爬虫实例演示

本案例的需求是:抓取豆瓣电影Top250电影信息。

url:https://movie.douban.com/top250
复制代码

开发工具采用PyCharm,数据库采用sqlServer2012。

数据库表脚本:

CREATE TABLE Movies
(Id INT PRIMARY KEY IDENTITY(1,1),Name NVARCHAR(20) NOT NULL DEFAULT '',EName NVARCHAR(50) NOT NULL DEFAULT '',OtherName NVARCHAR(50) NOT NULL DEFAULT '',Info NVARCHAR(600) NOT NULL DEFAULT '',Score NVARCHAR(5) NOT NULL DEFAULT '0',Number NVARCHAR(20) NOT NULL DEFAULT '0',Remark NVARCHAR(200) NOT NULL DEFAULT '',createUser INT NOT NULL DEFAULT 0,  createTime DATETIME DEFAULT GETDATE(),updateUser INT NOT NULL DEFAULT 0,    updateTime DATETIME DEFAULT GETDATE()
);
复制代码

爬虫的第一步,分析url,经过分析,豆瓣电影Top250页面的url有一定的规则:

每页显示25条电影信息,url规则如下,以此类推。

接着,再对网页源码进行分析:

最后,编写爬虫脚本:

import importlib
import random
import sys
import time
import pymssql
from selenium import webdriver
from selenium.webdriver.common.by import By# 反爬虫设置--伪造IP和请求
ip = ['111.155.116.210', '115.223.217.216', '121.232.146.39', '221.229.18.230', '115.223.220.59', '115.223.244.146','180.118.135.26', '121.232.199.197', '121.232.145.101', '121.31.139.221', '115.223.224.114']
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36",'X-Requested-With': 'XMLHttpRequest','X-Forwarded-For': ip[random.randint(0, 10)],'Host': ip[random.randint(0, 10)]
}importlib.reload(sys)try:conn = pymssql.connect(host="127.0.0.1", user="sa", password="123", database="MySchool",charset="utf8")
except pymssql.OperationalError as msg:print("error: Could not Connection SQL Server!please check your dblink configure!")sys.exit()
else:cur = conn.cursor()def main():for n in range(0, 10):count = n*25url = 'https://movie.douban.com/top250?start='+str(count)j = 1# if(n == 7):#     j = 5for i in range(j, 26):driver = webdriver.PhantomJS(desired_capabilities=headers)  # 封装浏览器信息driver.set_page_load_timeout(15)driver.get(url)  # 加载网页# data = driver.page_source  # 获取网页文本# driver.save_screenshot('1.png')  # 截图保存name = driver.find_elements(By.XPATH, "//ol/li["+str(i)+"]/div/div/div/a/span")[0].text.replace('\'', '')ename = driver.find_elements(By.XPATH, "//ol/li["+str(i)+"]/div/div/div/a/span")[1].text.replace("/", "").replace(" ", "").replace('\'', '')try:otherName = driver.find_elements(By.XPATH, "//ol/li["+str(i)+"]/div/div/div/a/span")[2].text.lstrip(' / ').replace("/", "|").replace(" ", "").replace('\'', '')except:otherName = ''info = driver.find_elements(By.XPATH, "//ol/li["+str(i)+"]/div/div/div/p")[0].text.replace("/", "|").replace(" ", "").replace('\'', '')score = driver.find_elements(By.XPATH, "//ol/li["+str(i)+"]/div/div/div/div/span[2]")[0].text.replace('\'', '')number = driver.find_elements(By.XPATH, "//ol/li["+str(i)+"]/div/div/div/div/span[4]")[0].text.replace("人评价", "").replace('\'', '')remark = driver.find_elements(By.XPATH, "//ol/li["+str(i)+"]/div/div/div/p/span")[0].text.replace('\'', '')sql = "insert into Movies(Name,EName,OtherName,Info,Score,Number,Remark) values('"+name + \"','"+ename+"','"+otherName+"','"+info + \"','"+score+"','"+number+"','"+remark+"') "try:cur.execute(sql)conn.commit()print("第"+str(n)+"页,第"+str(i)+"条电影信息新增成功")time.sleep(30)except:conn.rollback()print("新增失败:"+sql)driver.quit()if __name__ == '__main__':main()
复制代码

成果展示:

五分钟学会Python网络爬虫相关推荐

  1. 五分钟让你学会Python网络爬虫

    但不管怎样,爬虫技术是无罪的,还是值得我们开发人员去学习了解一下的.在学习之前,我们还是要先了解一下相关概念. 什么是爬虫 网络爬虫:又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动的抓取万维 ...

  2. 五分钟学会python函数_五分钟带你搞懂python 迭代器与生成器

    前言 大家周末好,今天给大家带来的是Python当中生成器和迭代器的使用. 我当初第一次学到迭代器和生成器的时候,并没有太在意,只是觉得这是一种新的获取数据的方法.对于获取数据的方法而言,我们会一种就 ...

  3. 五分钟学会python函数_Python——带你五分钟了解函数式编程与闭包

    今天是Python专题的第9篇文章,咱们来聊聊Python的函数式编程与闭包.编程 函数式编程 函数式编程这个概念咱们可能或多或少都据说过,刚据说的时候不明觉厉,以为这是一个很是黑科技的概念.可是实际 ...

  4. 五分钟学会python编程_每天五分钟python编程:生成器技术是python语言最强大的技术之一...

    动态方式生成列表 这样的方式生成列表会有一个特点:就是列表中的元素都是一下子生成的,因为这里之生成10个元素,因为元素数量比较少,所以体会不到,当我们这样的话:[i for i in range(10 ...

  5. ❤️一分钟学会Python网络编程❤️

    无监督学习

  6. 5分钟学会Python爬虫神器autoscraper——自动化爬虫必备

    5分钟学会Python爬虫神器autoscraper--自动化爬虫必备 爬虫神器autoscraper介绍 安装 使用 批量抓取 查看结果 爬虫神器autoscraper介绍 今天给大家介绍一个非常智 ...

  7. 实战python网络爬虫豆瓣_三分钟教会你利用Python爬虫实现豆瓣电影采集(实战篇)...

    一.项目背景 豆瓣电影提供最新的电影介绍及评论包括上映影片的影讯查询及购票服务.可以记录想看.在看和看过的电影电视剧 .顺便打分.写影评.极大地方便了人们的生活. 今天小编以电视剧(美剧)为例,批量爬 ...

  8. 10分钟教你利用Python网络爬虫获取穷游攻略

    完整源码在底部 [一.项目背景] 穷游网提供原创实用的出境游旅行指南.攻略,旅行社区和问答交流平台,以及智能的旅行规划解决方案,同时提供签证.保险.机票.酒店预订.租车等在线增值服务.穷游" ...

  9. python 网络爬虫开发第五天

    python 网络爬虫开发第五天 css选择器来选择html css选择器使用 python demo extract()[0]风险 编写爬虫使其可以索引文章 修改目标 NVD 构建python de ...

最新文章

  1. JQuery对象和JS对象区别与转换|| 事件绑定 入口函数 样式控制
  2. C语言rand(),srand()函数真实性能分析
  3. 中兴5250交换机配置手册_TSN工业交换机中文说明
  4. php如何导入数据,““php中如何将execl的数据导入到数据库中
  5. php text(),PHP+TEXT留言本(一)
  6. 清空数据库事务日志_通过事务日志增长加快数据库恢复和长期运行的事务
  7. 软件测试过程中的度量与分析
  8. 动态改变eachers图表高_动态Excel图表,让数据说话
  9. 阶段3 3.SpringMVC·_05.文件上传_5 文件上传之跨服务器上传分析和搭建环境
  10. 更改MAC终端显示的主机名
  11. 常用计算机office操作知识,计算机基础知识及OFFICE常用操作_
  12. C++ 输入输出加速挂(ACM竞赛常用)
  13. 代码实现数学图形之常用函数,幂,对数,指数,正弦,余弦,正切,余切,反正弦,反余弦,反正切,反余切,双曲正弦,双曲余弦,双曲正切,双曲余切,正割函数,余割函数,双曲正割,双曲正割.
  14. 【记录】codeReview总结
  15. CTF主办方指南之对抗搅屎棍
  16. win10使用无边框鼠标 (mouse without border)-局域网共享鼠标键盘
  17. springboot使用jdbc连接mysql数据库时测试连接错误
  18. C语言字母大小写互换的简单方法
  19. Java Web项目源代码|CRM客户关系管理系统项目实战(Struts2+Spring+Hibernate)解析+源代码+教程
  20. 十年牧码,我的平凡之路 | 程序员有话说

热门文章

  1. 简单的虚拟产品介绍html单页源码
  2. 关于linux上运行ONS
  3. 【全文翻译】ML-Leaks: Model and Data Independent Membership Inference Attacks and Defenses on Machine.....
  4. Android 音频(Audio)架构
  5. 微信支付 域名与后台配置不一致 当前页面的URL未注册
  6. 微信后台架构浅析--读写扩散技术
  7. 安装nvm时报错exit status 145和exit status 1 exit status 5
  8. 光猫 虚拟服务器设置,光猫虚拟服务器设置
  9. CoreMark简介
  10. 美团账号登录password参数加密逻辑