Python自学笔记(七)----------第一次做爬虫
本帖最后由 l2430478 于 2021-1-12 09:12 编辑管他东南西北风,咬定Python不放松。
一直在python皮毛上捣鼓,始终感觉无从下手。
教程无数,乱花渐欲迷人眼,
高人无数,又有谁人该教谁?
前几日发了一个1000CB+400CB税的拜师贴,也未能找到那位高人,管理一删了之,
这最高悬赏的1000CB并不可惜,它代表着我的最高的决心。
我今日摸索出来一段爬虫代码,且运行成功了,我就手把手交给小白,
以前可能有代码,看起来很详细,但复制后无法在本机运行,今日我就一步步教给大家。
1、安装Anaconda3。
不好意思,饶了一圈,又回到Anaconda3。robots协议(爬虫协议)
详情可以看我的自学笔记一。
2、安装bs4、requests的Python库。
在安装Anaconda3后,在运行爬虫时候,需要安装两个第三方包。
Anaconda3自带一个pip第三方包安装工具,我们可以通过pip把需要安装的包安装到本机环境。
打开cmd。在cmd中键入pip install bs4后按回车键,稍等1分钟左右,如果出现successfully installed,就表示安装成功。
同样方法,我们安装requests库,在cmd中键入pip install requests
要是报错,可以百度解决,如果后面代码运行不了,那么说明我们这里库没有装好,会过来继续处理。
如果提示pip版本过低,可以在CMD运行 python -m pip install --upgrade pip 进行升级。
如果提升已经安装,可以在CMD运行 pip list --outdated 查看已经安装有哪些包
推荐也安装下lxml库。
3、本地编辑器
Python的编辑器很多,有Notepad++, Sublime Text 2, Spyder和Jupyter。为了方便大家学习和调试代码,推荐使用Anaconda自带的Jupyter。下面将介绍它的使用方法。通过cmd打开Jupytero。打开cmd,输入键入jupyter notebook后按回车浏览器器启动Jupyter主界面,地址默认为http://local host: 8888/tree。
4、输入代码粘贴,然后alt+回车运行。今天我们爬虫的网站为http://www.santostang.com/,是教学性网站。
#!usr/bin/python
#coding: UTF-8
import requests #导入调用requests模块
link = "http://www.santostang.com/" #
headers = { 'User-Agent': 'Mozilla/5.0 (Windows;U; Windows NT6.1;en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
r = requests.get(link,headers = headers)
print (r.text)
简单的一个爬虫好了,我们可以更换网站,爬取其他网站。
有了这一步,我么其实可以摸索出更多,到处都是代码,都可以实践性运行。
感觉这一步,类似学会了开车,以前都是看别人秀车技。但别人的再好,自己不会开不行,我们即使开的不好,至少,能开了。。。
------------------对第一个爬虫进行深度分析
查询参数 requests.getres = requests.get(url,params=params,headers=headers)
特点: * url为基准的url地址,不包含查询参数 * 该方法会自动对params字典编码,然后和url拼接
实例:
import requests
baseurl = 'http://tieba.baidu.com/f?'
params = {
'kw' : '赵丽颖吧',
'pn' : '50'
}
headers = {'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'}
# 自动对params进行编码,然后自动和url进行拼接,去发请求
res = requests.get(baseurl,params=params,headers=headers)
res.encoding = 'utf-8'
print(res.text)
建议:
前期多模仿,更多是复制,headers能够模拟用户访问,防止被检测到,让我们自行根据需求写估计还不行,其实很简单,我们复制别人做好的headers即可。换换教程网址,多实践。 不错 感谢分享 大佬厉害 厉害了我的哥 这个关注了,赞 厉害了👍 好东西,收藏了啊{:1_921:} 厉害了。。。 很赞,,至少坚持了。。 试了牛逼牛逼