#python爬虫篇#
前几次的爬虫文章讲到了去爬某度,说实话!某都对初学朋友还是很友好的!
只要几行代码就搞定了,至少有东西呈现给你,是不是你需要内容的还需要你再下功夫!
import urllib.request
url = 'htttp://www.baidu.com'
re = urllib.request.urlopen(url)
html = re.read()
print(html)
敲完回车后,看看屏幕上不停滚动的字符,心中还是非常激动的。
我们使用上面的代码,换个网址,比如:
http://www.douban.com
执行url = http://www.douban.com
re = urllib.request.urlopen(url)
回车后就出现了一下的错误提示:
urllib.error.HTTPError: HTTP Error 418:
上面最后一行信息告诉我们,我们的目标网站有反爬机制,接下来我们如何让目标网站的服务器认为自己的爬虫是正常访问的用户呢。这时候我们就需要“伪装”自己。
如何”伪装“?
我们向下看。
首先这里提到一个新名词,用户代理。
百科中这样说:
User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
作为初学者,我们关心的是如何使用?
现在就来告诉大家。
第一个,我们自己使用的浏览器的UA是什么?
温馨提示:同一台电脑上不同的浏览器,他们的UA都是不一样的!
打开浏览器。比如windwos edge浏览器。
在里面输入about:version
这么多信息,到底我需要那个信息,如何使用呢?
找到【用户代理】这一段就可以了。
然后我们把用户代理加到爬虫里面去。我们需要这样写:
标准格式格式:headers ={'User-Agent':''}
这是一个字典变量,key:value结构
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36 Edg/86.0.622.43'}
因为urlopen不能接收这个变量。
我们需要改更改下代码
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36 Edg/86.0.622.43'}
request = urllib.request.Request(url=url,headers = headers)
re = urllib.request.urlopen(request)
加这三句进去。
整体代码如下
import urllib.request
url = 'http://www.douban.com'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36 Edg/86.0.622.43'}
request = urllib.request.Request(url = url, headers = headers)
re = urllib.request.urlopen(request)
html = re.read()
print(html)
回车后,哈哈,豆瓣被你攻破了!
我们现在知道如何进行初步的反爬了。
下一步,我们要搞很多的浏览器,让我们的爬虫进行访问目标猎物的时候,随机选择,让对方的目标根本没法识别。这是一场斗智的过程。
我们之前使用的是:
urlopen简介
urlopen是urllib.request模块提供的最基本的构造HTTP请求的方法,可以模拟浏览器的一个请求发起过程,同时还支持授权验证(authentication)、重定向(redirection)、浏览器Cookies以及其他内容。
使用方法为
urllib.request.urlopen(url, data=None, [timeout,]*, cafile=None, capath=None, cadefault=False,context=None)
这个方法当中有7个参数,因为我们是最基本的访问,只使用了一个url.
今天我们增加使用了这个:
Request简介
urlopen()方法可以实现最基本的请求的发起,但如果要加入Headers等信息,就可以利用Request类来构造请求。
使用方法为:
urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
可以看出,这个Request类里面有6个参数,我们使用了2个就够了,一个是url,一个是headers.
目前为止:爬虫系统文章如下:
python爬虫预备预备知识
https://mbd.baidu.com/newspage/data/landingshare?pageType=1&isBdboxFrom=1&context=%7B%22nid%22%3A%22news_9449450465064677722%22%2C%22sourceFrom%22%3A%22bjh%22%7D
网络爬虫预备知识(二)
https://mbd.baidu.com/newspage/data/landingshare?pageType=1&isBdboxFrom=1&context=%7B%22nid%22%3A%22news_10026345515978701465%22%2C%22sourceFrom%22%3A%22bjh%22%7D