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

什么是爬虫

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

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

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

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

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

爬虫的基本原理


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

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

爬虫工具和语言选择

一、爬虫工具

工欲善其事必先利其器的道理相信大家都懂的,想要提升效率,一些常用的工具是必不可少的,以下就是个人推荐的几款工具: 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()
复制代码

成果展示:

最后,小编分享一波2019最新的python全套教程最后小编为大家准备了6月份新出的python自学视频教程,共计415集,可以免费分享给大家!可加小编的学习群就能免费领取了:1084028245

2019Python自学教程全新升级为《Python+数据分析+机器学习》,九大阶段能力逐级提升,打造技能更全面的全栈工程师。

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

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

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

  2. 五分钟学会Python网络爬虫

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

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

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

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

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

  5. python网络爬虫权威指南 豆瓣_豆瓣Python大牛写的爬虫学习路线图,分享给大家!...

    豆瓣Python大牛写的爬虫学习路线图,分享给大家! 今天给大家带来我的Python爬虫路线图,仅供大家参考! 第一步,学会自己安装python.库和你的编辑器并设置好它 我们学习python的最终目 ...

  6. 开源 Python网络爬虫框架 Scrapy

    开源 Python 网络爬虫框架 Scrapy:http://blog.csdn.net/zbyufei/article/details/7554322 介绍 所谓网络爬虫,就是一个在网上到处或定向抓 ...

  7. 如何用python搜索要用的素材_一篇文章教会你利用Python网络爬虫获取素材图片

    [一.项目背景] 在素材网想找到合适图片需要一页一页往下翻,现在学会python就可以用程序把所有图片保存下来,慢慢挑选合适的图片. [二.项目目标] 1.根据给定的网址获取网页源代码. 2.利用正则 ...

  8. python网络爬虫学习笔记(7)动态网页抓取(二)实践

    文章目录 1 资料 2 笔记 2-1 准备 2-1-1. 网址 2-2-2 文本位置 2-2 代码 2-2-1 原型 2-2-2 ver0.1 1 资料 <Python网络爬虫从入门到实践> ...

  9. 【Python】猎聘网招聘数据爬虫(Python网络爬虫课设简要)

    [Python]猎聘网招聘数据爬虫(Python网络爬虫课设简要) 注: 本文仅供学习交流使用! 合肥学院-20信管-20302211009 项目文件可自行前往博客主页下载或联系作者qq(341625 ...

最新文章

  1. rpm的使用 怎样查看rpm安装包的安装路径
  2. gin中间件中使用Goroutines
  3. 循环往list中add对象却总是add的是一个对象
  4. Cannot open include file: jni.h: No such file or directory解决方法
  5. Python操作MongoDB - 极简教程
  6. 最前线 | 斗鱼一季度月活用户超虎牙,但上市时间仍不明确
  7. Solr进阶之Solr综合文本相似度的多因素权重排序实现
  8. 电子技术基础资料合集
  9. 雷赛控制卡总线方式的坑
  10. 古建筑测绘任重道远,三维实景建模是唯一突破口?
  11. 在线手机WAP模拟器或软件,用电脑IE浏览器在线浏览手机wap网站
  12. 特征点法光流法直接法
  13. 使用burp suite验证是否存在csrf漏洞
  14. Visio画坐标系步骤
  15. Python爬取上交所年报下载并转TXT
  16. 源支付5.18源码/三网免挂/带云端/附源码搭建教程
  17. sprintboot验证码kaptcha 自定义图片样式
  18. LeetCode 316/1081[Python]. 去除重复字母 给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。
  19. 在 Win7 下安装 KB4512506 补丁报告 0x80092004 错误的解决办法
  20. hexo设置网站的图标Favicon

热门文章

  1. C305例会-电脑攒机
  2. IC基础知识(八)ROM、PROM、EPROM、EEPROM和Flash之间的区别
  3. 免费赠送BTC和iPhone XS 揭开YEX虚拟盘的面纱
  4. 如何设置windows防火墙的出入规则
  5. 在云服务器中搭建MQTT平台
  6. es文件管理器 web服务器,强烈推荐:云盘 = ES文件浏览器app “ + ”穿越派软件
  7. 数学中的伟大定理:海伦公式的推导过程
  8. 【蓝桥杯】 算法训练 旅行家的预算
  9. 互联网因特网计算机网络的区别,因特网和互联网的区别?
  10. 通过数据库存储过程调用Web服务的办法