爬虫前期知识的储备(二)

通用爬虫与聚焦爬虫:

通用爬虫:搜索引擎用的爬虫系统
1)目标:
把互联网的网页下载下来,放到本地服务器形成备份,
再对这些网页做相关处理(提取关键字,去掉广告),最后提供一个用户检索接口。
2)抓取流程:
首先选取一部分已有的URL,把这些URL放到待爬取队列。
从队列里取出这些URL,然后解析DNS得到主机IP,然后去这个IP地址对应的服务器下载HTML页面,
保存到搜索引擎的本地服务器,之后把这个爬过的url放入已爬取队列。
分析这些网页内容,找出网页里其他的URL连接,继续执行第二步,直到爬取条件结束。
DNS:就是把域名解析成IP的技术。
3)搜索引擎如何获取一个新网站的URL:
主动向搜索引擎主动提交网址;
在其它网站里设置网站的外链(友情链接);
搜索引擎会和DNS服务商进行合作,可以快速收录新的网站。
4)通用爬虫并不是万物皆可爬,需要遵守一些规则:
Robots协议:协议会指明通用爬虫可以爬取网页的权限。
Robots.txt(详情规则),一般只有大型的搜索引擎爬虫会遵守。
个人写的爬虫就不管了。
5)通用爬虫工作流程:
爬取网页-->存储数据-->存储数据-->内容处理-->提供检索/排名服务
6)搜索引擎排名:
PageRank值:根据网站的流量(点击量/浏览量/人气)统计,排名越高越值钱。
竞价排名:谁给钱多,谁排名高。
7)通用爬虫的缺点:
只能提供和文本相关的内容(HTML、Word、PDF)等,
不能提供多媒体文件(音乐、图片、视频)等,二进制文件(程序、脚本)等。
提供的结果千篇一律,不能针对不同领域不同专业的人提供不同的搜索结果。
不能理解人类语义上的检索。

聚焦爬虫:爬虫程序员写的是针对某种内容的爬虫
为了解决通用爬虫存在的问题,聚焦爬虫出现了。
面向主题爬虫,面向需求爬虫,会针对某种特定的内容去爬取信息,
而且会保证内容和信息尽可能地相关。
聚焦爬虫的工作原理:
url-list-->响应内容-->提取url(-->响应内容,直到获取完成,进入下一步)-->提取数据-->入库

HTTP和HTTPS

HTTP协议:是一种发布和接收HTML页面的方法,即超文本传输协议。
HTTPS协议:HTTP的安全版,在HTTP下加入SSL层,SSL层在传输层对网络连接进行加密。

HTTP通信由两部分组成:客户端请求消息与服务器响应消息

客户端HTTP请求包括以下的格式:
请求行、请求头部、空行、请求数据
HTTP请求主要分为Get和Post两种方法。
GET是从服务器上获取数据,POST是向服务器传送数据。
如果要提交表单,选择Post方式,使用Get方式会把用户密码暴露在地址栏上。

Cookie:通过在客户端记录的信息确定用户的身份。
Session:通过在服务器端记录的信息确定用户的身份。

Fiddler是一个不错的抓包工具,当然直接浏览访问也可以。

那么接下来我们就写一个简单的爬虫百度代码:

from urllib import request
import random

#统一资源定位符
url="http://www.baidu.com"

#可以是User-Agent列表,也可以是代理列表
ua_list=[
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6814.400 QQBrowser/10.3.3005.400",
"Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1",
"Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Mobile Safari/537.36",
"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Mobile Safari/537.36"
]


#在User-Agent列表中随机选择一个,更具有安全性
user_agent=random.choice(ua_list)


#User-Agent是爬虫和反爬虫斗争的第一步,养成这个好习惯
headers={
"User-Agent":user_agent
}


#向指定的url地址发送请求,并返回服务器响应的类文件对象
#在Python2中,是urllib2,在Python3被改成urllib.request.
response=request.urlopen(url)

#服务器返回的类文件对象支持Python文件对象的操作方法
#read()方法就是读取文件里的全部内容,返回字符串
html=response.read()

#打印响应内容
print(html)

#打印响应码
print(response.getcode())

#返回实际数据的实际url,防止重定向的问题
print(response.geturl())

#返回服务器响应的HTTP报头
print(response.info())
输出结果:
(百度源码略)

200


http://www.baidu.com


Date: Mon, 07 Jan 2019 06:47:42 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: Close
Vary: Accept-Encoding
Set-Cookie: BAIDUID=B1228A8040377591F7EB96B1090C4AE2:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BIDUPSID=B1228A8040377591F7EB96B1090C4AE2; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: PSTM=1546843662; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: delPer=0; path=/; domain=.baidu.com
Set-Cookie: BDSVRTM=0; path=/
Set-Cookie: BD_HOME=0; path=/
Set-Cookie: H_PS_PSSID=1461_21101_28205_28132_26350_28266_27245_22158; path=/; domain=.baidu.com
P3P: CP=" OTI DSP COR IVA OUR IND COM "
Cxy_all: baidu+395db271fbbb06e1373116f63b95c029
Cache-Control: private
Expires: Mon, 07 Jan 2019 06:47:25 GMT
Server: BWS/1.1
X-UA-Compatible: IE=Edge,chrome=1
BDPAGETYPE: 1
BDQID: 0xd80982870003d452

转载于:https://www.cnblogs.com/Masterpaopao/p/10233204.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569959.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jQuery教程05-层级选择器

jQuery选择器之层级选择器 文档中的所有的节点之间都是有这样或者那样的关系。我们可以把节点之间的关系可以用传统的家族关系来描述,可以把文档树当作一个家谱,那么节点与节点直接就会存在父子,兄弟,祖孙的关系了。 选择器中的…

WebSocket使用中Stomp Client连接报ERROR CODE 200的解决办法

最近在做一个WebSocket项目,后台使用了Stomp协议的WebSocketConfigurer,但是前端在测试的时候,发现一个很奇怪的问题: 本地的测试代码,最初我使用了JavaSockJS实现: Configuration EnableWebSocketMessageB…

jQuery教程06-基本筛选选择器

jQuery选择器之基本筛选选择器 很多时候我们不能直接通过基本选择器与层级选择器找到我们想要的元素,为此jQuery提供了一系列的筛选选择器用来更快捷的找到所需的DOM元素。筛选选择器很多都不是CSS的规范,而是jQuery自己为了开发者的便利延展出来的选择…

jQuery教程07-内容筛选选择器

jQuery选择器之内容筛选选择器 基本筛选选择器针对的都是元素DOM节点,如果我们要通过内容来过滤,jQuery也提供了一组内容筛选选择器,当然其规则也会体现在它所包含的子元素或者文本内容上 内容过滤器描述如下表: 注意事项&…

[bzoj3489]A simple rmq problem_KD-Tree

A simple rmq problem 题目大意:给定一个长度为$n$的序列,给出$m$个询问:在$[l,r]$之间找到一个在这个区间里只出现过一次的最大的数。 注释:$1\le n\le 10^5$,$1\le mle 2\cdot 10^5$。 想法: 我的第一想法…

JSON入门

JSON简介 JSON ( JavaScript Object Notation, JS 对象标记 ) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅…

字符流

字符输入流Reader import java.io.FileReader; import java.io.FileWriter; import java.io.IOException;public class Demo04 {public static void main(String[] args) throws IOException {method1();method2();method3();copy();} FileReader类 //文本文件建议用字符流读取…

Apache服务器下载、安装、启动、关闭及卸载(win版)

今天讲一下64位win7环境下apache服务器的下载、安装及配置的过程。 1、Apache的下载 百度搜索apache,然后单击选择的下载网站: 我选择的是第一个网站,第二个也可以。 进入之后,确定下载的apache版本,这里选择2.4…

定义一个类:实现功能可以返回随机的10个数字,随机的10个字母, 随机的10个字母和数字的组合;字母和数字的范围可以指定,类似(1~100)(A~z)...

#习题2:定义一个类:实现功能可以返回随机的10个数字,随机的10个字母, #随机的10个字母和数字的组合;字母和数字的范围可以指定class RandomString():#随机数选择的范围作为参数,如(1~100&#x…

Navicat导入Excel表格数据

现在使用图像化工具来管理数据库是越来越方便了,PhpMyAdmin和Navicat都是管理数据库的好工具,这里我记录一下使用Navicat导入xls表格数据的方法。大家可以作为参考。 1、查看一下导入的表格,注意第一行是字段名(也可以不要第一行…

creator2.0.2 native游戏截屏微信分享

cocos creator 2.0.2后 游戏内截屏,native微信SDK分享代码:public static wxShareScreenShot(sType: number) {let node new cc.Node();node.parent cc.director.getScene();node.width cc.view.getVisibleSize().width;node.x cc.view.getVisibleSi…

配置apache支持PHP(win7)

wamp和lamp是PHP工程师经常使用的环境,我们今天来配置apache,让它能够和php协同工作。 1、进入apache的conf目录,打开apache的配置文件httpd.conf。(修改前建议先备份) 修改apache软件所在目录: ServerRoo…

PHP5.6的安装与配置(win7)

1、PHP的安装 1)、环境安装目录: D:/wamp/|——php|——php-5.6.22-Win32-VC11-x86|——Apache24|——mysql|——www2)、下载 linux专用:http://www.php.net/downloads.php windows专用:http://windows.php.net/dow…

【一类题】二维数点的几个做法

二维数点的题目还用赘述么…… 题意就是这道题 离线 $CDQ$ 分治 在线 $k-d tree$转载于:https://www.cnblogs.com/scx2015noip-as-php/p/two-dimensional.html

MySQL5.7数据库软件下载教程

1、搜索MySQL 2、选择MySQL社区开源版本 3、单击下载社区版 4、选择所需版本-这里选择安装版 5、单击Download 6、建立Oracle账户/登录Oracle账户 注意:这里就不注册了,直接登录。 7、填写信息 8、单击下载MySQL数据库安装包 9…

.NET 面向对象基础

今天看大话设计模式,看到一些基础知识,记录下来。 对象:一切事务皆对象,对象是一个自包含的实体,用一组可识别的特性和行为来标识。好处,可维护、可扩展、可复用、灵活。 面向对象编程:其实就是…

后台传参与select-option标签的默认选中

从后台传递过来的参数是数据的详情页,在编辑页的select下拉框汇总既要显示所有的选项,又要默认显示选中项,后台传递过来的value值与option的value值相同时就默认选中(即给option标签添加selected”selected”属性)。 …

流操作运算符(二)

output管一个复数的输出&#xff0c;return之后再输出其它的复数 input同理 #include <iostream> using namespace std;class Complex {public:friend ostream & operator << (ostream &,Complex);friend istream & operator >> (istream &,…

jQuery教程08-属性筛选选择器

jQuery选择器之属性筛选选择器 属性选择器让你可以基于属性来定位一个元素。可以只指定该元素的某个属性&#xff0c;这样所有使用该属性而不管它的值&#xff0c;这个元素都将被定位&#xff0c;也可以更加明确并定位在这些属性上使用特定值的元素&#xff0c;这就是属性选择…

有关Canvas的一点小事—图像绘制

1、 使用canvas绘制图像 什么是图像&#xff1f;在js中它就是一个<img src””>&#xff0c;<img>有两种接收图像信息的方法&#xff0c;一个是直接链接到图像地址&#xff0c;一个使用base64数据&#xff0c;不过这里讨论的是canvas要使用的Image对象。我们有两个…