Python爬虫学习笔记(一)
最近在学python爬虫,顺便把一些学习记录记下来,可能还有些表述不到位的地方,所以请大家指正下,一起学习,一起进步吧。嗯,这次是一个比较简单的案例,也就10行代码左右,爬取网络源代码,用到了requests库,如果没有安装的可以用下面的命令安装一下:
pip install requests
先把源代码附上,然后我们再慢慢解说了。
这里是基础案例,以百度为例,所以就没有添加headers里面的信息,后面会说爬取有反爬虫的网站,我们该怎么办。
import requests
def get_html(url):
html = requests.get(url)
if html.status_code == 200:
html.encoding = 'utf-8'
print(html.text)
else:
print('ERROR:', url)
if __name__ == '__main__':
url = 'https://www.baidu.com/'
get_html(url)
毫无疑问,先导包
我们前面已经说了这次用的是requests包,这个包可以解决大部分的爬虫问题
import requests
然后,获取界面上的源代码,这里用get请求就可以了,这时源码相关的信息已经贴上了html的标签
html = requests.get(url)
这时候我们需要判读我们刚刚的请求是否成功,直接判断他返回的状态码是否等于200就可以了
if html.status_code==200:
顺便说下基础的返回数字代表的信息
200 成功,服务器已成功处理了请求
3xx 表示要完成请求,需要进一步操作(跳转界面之类的)。
4xx 这些状态代码表示请求可能出错(也就是我们代码方面可能有问题),妨碍了服务器的处理。
5xx 这些错误一般是服务器本身的错误,而不是请求或代码出错。
再将获取的html的编码格式设置为utf-8
html.encoding = 'utf8'
下一步打印输出:
print(html.text)
如果觉得这种输出不太方便看,可以使用pprint库先导包
import pprint
调用:
pprint.pprint(html.text)
然后就是程序的main函数,也就是启动这个程序
url是你要爬取的目标网址,调用刚刚写好的方法就可以了
if __name__ == '__main__':
url = 'https://www.baidu.com/'
get_html(url)
最后我们来说下一些比较基础的反爬虫应对方法,那就是添加headers,里面放可以有选择的放三个比较常用的参数
headers = {
'Referer': '..............',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
'Cookie': '............'
}
这三个参数来自于你要爬取的网站,按F12或右键检查源码,network第一个文件header里,如下图:
里面的信息直接复制即可,使用headers方法如下:
html = requests.get(url, headers=headers)
其它方面我们保持不变,就可以破解反爬虫中最常见的三种措施了,其他的下次有空我们在一起学习吧。