网站首页 > 开源技术 正文
之前闹的沸沸扬扬的新闻“上亿简历大数据公司被警方一锅端”,因为其公司内部大部分数据是通过使用爬虫来抓取到的,属于违法行为,所以被警方给一锅端了!
马上就会有小伙伴问了:“爬虫,违法吗?”
我认为:爬虫不犯法!
但是爬虫要讲究规则和方法的,一定要善用爬虫,慎用爬虫,爬虫虽好,但是一定不要侵权,尤其是盗取别人的原创内容和知识,更不要传播具有版权的内容和产品。
下面我们来具体谈一谈爬虫吧!
//爬虫是什么?
如果我们把互联网比作一张大的蜘蛛网,蜘蛛网的各个节点代表就是数据,而爬虫就是一只小蜘蛛,沿着蜘蛛网来抓取自己的猎物(数据)
爬虫:本质上是一个程序,向网站发起请求,获取资源,然后分析并提取有用的数据。
具体:通过程序模拟浏览器请求站点的行为,把站点返回来的html代码/json数据/二进制数据(图片,视频)爬到本地,进而提取自己需要的数据,存放起来使用。
//爬虫的基本流程
发送请求---->获取相应内容--->解析内容---->保存数据
01
发起请求
使用http库向目标站点发送请求,即发送一个Request
Request包含:请求头/请求体等
Request模块缺陷:不能执行js和css代码
02
获取相应内容
如果服务器能正常相应,则会得到一个Response
Reponse包含:html/json/图片/视频等
03
解析内容
解析html数据:正则表达式(RE模块),第三方解析库Beautifulsoup/pyquery等
解析json数据:json模块
解析二进制数据:以wb的方式写入文件
04
保存数据
数据库/文件
// 爬取数据
01
爬取网页内容,保存到本地文件
导入urllib模块
import urllib
发送请求
方法一:发送一个get请求到指定页面,返回http响应
reponse = urllib.request.urlopen(url)
方法二:模拟浏览器发送get请求(有些服务器会检查头信息,用来判断是否是浏览器发送的请求)
创建request对象
req= urllib.request.Request(url)
在request中添加头信息
req.add_header('User-Agent':'Mozilla/6.0')
发送请求
reponse = urllib.request.urlopen(req)
方法三:模拟浏览器发送post请求
获取状态码,如果是200表示成功
reponse.status
调用网页对象的read()方法读取网页源码
html_code = page.read()
02
网页解析
获取网页的编码格式
使用chardet模块
import chardet
char_dic = chardet.detect(html_code)
结果:
{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
编码格式:
char_dic['encoding']
html = html_code.decode(char_dic['encoding'])
使用正则解析
省略
BeautifulSoup4解析
BeautifulSoup4是一个可以从HTML或XML文件中提取数据的Python库
1)简介html文档对象模型
省略
2)使用BeautifulSoup4解析过程
创建BeautifulSoup4对象-->搜索节点(按名称/属性/文本)-->访问节点(名称/属性/文本)
核心代码:
#导入模块
from bs4 import BeautifulSoup
#创建BeautifulSoup4对象
soup = BeautifulSoup4(html_doc,"html.parser")
#搜索节点 find_all(name,attrs,string)
a_nodes = soup.find_all("a") #搜索标签名为a的所有节点
a_nodes = soup.find_all("a",class="abc") #搜索标签名为a,class值为abc的所有节点
#访问节点:获取节点的标签名
node.name
#获取节点的属性值
node.get(attr)
#获取节点的文本内容
node.get_text()
03
保存数据
使用I/O流保存在本地文件中
//实例分析
爬取图片
url:
http://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&word=%E5%9B%BE%E7%89%87
代码:
结果:
以上就是今天关于爬虫的相关内容!
最后想问问大家认为爬虫违法么?认为如何正确使用爬虫呢?认为爬虫什么不会违法?
欢迎大家在文章底下留言,一起交流自己的看法和观点。
猜你喜欢
- 2024-10-25 还在为实习工作发愁?保姆级爬虫教程,python爬取“实习网”信息
- 2024-10-25 利用python爬虫,3分钟帮朋友找到工作
- 2024-10-25 用python实现自己的小说阅读器(python编写pdf阅读器)
- 2024-10-25 安卓手机基于python3搜索引擎(python调用安卓so文件)
- 2024-10-25 Pip, Pipenv, Poetry or Conda——你会选择哪个?
- 2024-10-25 手把手搭建Web蜜罐Glastopf(如何搭建蜜罐)
- 2024-10-25 Python实现一键翻译英文论文,实现了pdf文档英译汉,pdf格式不变
- 2024-10-25 zabbix 钉钉报警带监控波动图(zabbix实现钉钉报警)
- 2024-10-25 Python 3.8 稳定版正式发布,新特性全面解读
- 2024-10-25 不用 pip install,你养我吗?(不用pip安装whl)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)