Python 目前的活跃度逐渐提升 我们应该掌握一些基本的操作
之前对Python的入门做了简单的学习 ,当然一门语言不可能在这么短的时间内学习完成 ,只是可以在没有学习完成的情况下使用,去提升学习,我学习爬虫的最初原因是想写一个Android的应用程序,奈何缺少数据,才驱使我去学习的(挺赖的…..)
一、 爬虫入门
爬虫的大概过程可以总结为:
- 请求数据源拿到自己想要的数据(一般情况下所需要的数据源都来自网络)
- 分析所需要的数据相对应的节点或者发现规则
- 进行数据的爬去
1、1 网络请求
网络请求我推荐使用的是requests 模块 ,这个库特别简单,操作方便,但是不要和框架去做比较 ,这里的爬去数据是相对反爬虫技术简单的,这个库就够用了,
- 在python文件中导入该库,网络请求很简单,并且有请求的方式选择,post、get 等等
url = "http://gank.io/api/data/福利/10/1"
r = requests.get(url)
print(r.json())
这就是一个简单的网络请求,
- 我将要做爬中爬去的是在美食杰的数据(仅做测试,非正式使用数据)
- 使用requests请求数据 打开浏览器 开发者模式 查看该网页的请求方式 (这些就不用介绍了)使用bs4库中的BeautifulSoup 格式化非网页文本为标准的网页格式
if url:
res = requests.get(url)
res.encoding = 'utf-8' #指定网页中的文字显示的格式(解决乱码问题)
soup = BeautifulSoup(res.text, 'html.parser') # 'html.parser'这个是指定解析器 不然会有警告
- 我们将会拿着上面已经格式化的数据soup去做响应的处理 ,此时我们因该做的是我们要那些数据,比如我需要这些数据中的分类
- 首先啊 ,应该是去网页中找到要爬去的数据在网址中展示的位置节点 可以在开发者工具中用ctrl + F 去找 找到之后查看他所在的节点的标签名称(因为我们要使用这些节点名称去获取数据)
- 比如案例中 找到黄瓜
分析数据节点你会发现上面的有个class 为tabcon po为2的几点包含整个分类的数据所以我们将soup数据进行提取
allDatas = soup.select('.tabcon')
categories = allDatas[1].select('a')
if categories:
for category in categories:
__categoryInfo = category.select('strong')[0].text # 分类的详细信息
return self.categoryInfos
这就提取出来了分类的文本 ,这个看不懂没关系 ,在看一下爬虫的过程是怎么做的
- 寻找特定的元素
alink = soup.select('div') # 使用select 找出含有div标签的元素 这样找出来是一个集合 然后
alink[0] # 去掉集合[]
alink[0].text # 取出文本信息
- 查找id 所对应的内容 需要在‘‘ 中的id标签前面添加#
alink = soup.select('#fliterstyle1') # 使用select 找出含id为fliterstyle1的数据
- 找出class为XXX的内容是在class前添加一个.
allDatas = soup.select('.tabcon') # 使用select 找出class为tabcon的数据 它取出来是一个集合在要取里面的相对应的元素使用for 循环
categories = allDatas[1].select('a')
if categories:
for category in categories:
__categoryInfo = category.select('strong')[0].text # 分类的详细信息
OK ,这就简单的将自己需要的数据爬取出来了 可以将爬去出来的数据转换成字典或者集合等数据类型进行使用或者存储 在用于别的项目中 我这里有关于这个项目爬取的部分项目代码
项目开发环境
python 3.6
pycharm
爬取美食杰网页数据
有同样做Android的正在学习Python的一起讨论 kong1114011931 微信
支持原创 转发请注明 图你怀中安稳 http://blog.youkuaiyun.com/qq_32648731/article/details/79228718