python爬虫基本原理及入门

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python爬虫基本原理及入门相关的知识,希望对你有一定的参考价值。

爬虫:请求目标网站并获得数据的程序

爬虫的基本步骤:

技术分享图片

使用python自带的urllib库请求百度:

import urllib.request

response = urllib.request.urlopen(http://www.baidu.com)
print(type(response))

#打印结果
<class http.client.HTTPResponse>

可以从类型上看出来,response是一个HTTP响应

 

 

请求:

技术分享图片

请求的方式以GET和POST最为常用,一般的GET方法将请求参数放在URL中。如在百度中搜索一个关键词,这就形成了以GET在URL中更改参数的方法。

而POST将参数放在表单内进行请求。如请求登陆百度,需要向百度服务器发送你的账号密码这些东西。

 

请求头是一个很重要的请求内容,在一般的浏览器请求中,网站会返回一个你的浏览器信息,如果在代码不伪装程浏览器的情况下,你的IP地址会迅速的被网站封掉,每个爬虫库的伪装方式都是不同的,如urllib库

import urllib.request

heads = {}
    heads[User-Agent] = Mozilla/5.0                            (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50                            (KHTML, like Gecko) Version/5.1 Safari/534.50


req = urllib.request.Request(url=url, data=data, method=POST, headers=heads)

response = urllib.request.urlopen(req)
print(response.getheaders()) #getheaders()方法将会返回给你一些请求信息,如时间,服务器信息等,包含user-agent

 

 响应:

技术分享图片

响应就是请求之后浏览器所呈现的东西,最重要的就是响应体,包含了网页的源文件

在代码的情况下查看响应状态:

import urllib.request

response = urllib.requset.urlopen(http://www.baidu.com)

print(response.getcode())

#返回200表示成功

 

解析方式:

当想要获得网页中某些元素应该怎样去解析?

技术分享图片

解析的方式多种多样,目前还只是使用正则来做解析,听说xpath是最简单解析方式,不过我觉得每个库还是要使用一下试试的,看看哪个更适合你。

为什么有的网页请求源码和在浏览器中查看到的不一样?

这是因为动态网站使用了JS渲染,元素都是经过js动态加载出来的,所以想要获得源码还要去模拟浏览器的行为,像selenium驱动browser,PhantomJS等工具。

 


以上是关于python爬虫基本原理及入门的主要内容,如果未能解决你的问题,请参考以下文章

如何入门Python爬虫?爬虫原理及过程详解

python爬虫零基础入门——反爬的简单说明

如何入门 Python 爬虫

python爬虫从入门到放弃之爬虫的原理

python爬虫从入门到放弃之爬虫的原理

爬虫python入门难学吗