本文来源于公众号【程序猿声】,作者周云猛

大家好,我是新来的小编小周。今天给大家带来的是python爬虫入门,文章以简为要,引导初学者快速上手爬虫。话不多说,我们开始今天的内容。在初步学习爬虫之前,我们先用一个例子来看看爬虫是什么。

A同学想要了解python是一种怎样的语言,于是打开了某度搜索引擎,却发现占据屏幕的是各类python学习课程的广告,而真正介绍python的内容却被放在了后面。事实上,在大多数时候,我们用浏览器获得的信息是十分繁冗的,因此筛选提取网页中对我们有用的数据就显得十分必要了。我们的爬虫程序要做的便是:模拟浏览器发送请求-->获取网页代码-->筛选提取数据-->存放数据。

前期准备

爬虫程序中需要用到一些第三方库,我们这里使用的是requests库和BeautifulSoup4库。话不多说,让我们先来做好这些准备。(笔者使用的是IDLE3.8版本编辑器,及win系统)

requests 2.22.0下载地址:https://pypi.org/project/requests/#files BeautifulSoup4 4.8.2下载地址:https://pypi.org/project/beautifulsoup4/#files

python3.0以上版本一般自带pip(可提供对第三方库的下载安装等),故第三方库下载后可直接进行安装。1. 打开cmd

2. 若python安装在启动盘(一般是C盘)直接键入“pip install requests”命令即可。

3. 若python不在启动盘则键入“d:”然后“cd python.exe所在目录”,直接键入 ”python -m pip install requests”命令即可。

(BeautifulSoup4库安装步骤相同)

发送请求

模拟浏览器发送请求时,我们可以使用requests库帮助我们。下面给出requests库的7个主要方法:

发送请求后,服务器会接受请求,并返回一个response。

response作为一个对象,具有如下常用属性:

接下来,我们以访问百度主页的代码为例来看看吧!

import requests

url="http://www.baidu.com/"

res=requests.get(url)

print(res.status_code)

200

其中,我们介绍一下requests.get()函数的带参数形式。params是字典或字节序列,可以添加到url中;****headers是HTTP的定制头等等。我们以headers为例,headers是HTTP的定制头,一些服务器在处理requests请求时会识别请求头,并拦截python爬虫。

import requests

url="http://www.zhihu.com/"

res=requests.get(url)

print(res.status_code)

400

print(res.request.headers)

{'User-Agent': 'python-requests/2.22.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}

可以看到我们通过python访问知乎首页被拦截了,查看请求头时发现User-agent是python—-requests/2.22.0。下面我们尝试修改请求头伪装成浏览器:

import requests

pre={'User-agent':'Mozilla/5.0'}

res=requests.get("https://www.zhihu.com/billboard",headers=pre)

print(res.status_code)

200

可见,修改请求头后访问成功。利用requests的get方法和response的content属性(图片以二进制形式保存),我们可以下载网络上的一些图片,下面以获取新浪新闻的一张图片为例:

import requests

url="http://www.sinaimg.cn/dy/slidenews/5_img/2015_48/30939_1300019_688168.jpg"

path="D://pics//"+"maomi.jpg"

try:

res=requests.get(url)

with open(path,'wb') as pic:

pic.write(res.content)

pic.close()

print("文件保存成功")

except:

print("爬取失败")文件保存成功

解析内容

Beautiful Soup库是解析、遍历、维护文档树的功能库。

简单地说,BeautifulSoup能够帮助用户将response中的html内容解析,得到一个BeautifulSoup的对象,并且能够以标准的缩进格式输出。我们以知乎热榜网页为例(注意B和S要大写哦):

import requests

from bs4 import BeautifulSoup

pre={'User-agent':'Mozilla/5.0'}

res=requests.get("https://www.zhihu.com/billboard",headers=pre)

rep=res.text

soup=BeautifulSoup(rep,"html.parser")

print(soup)

运行代码后可以看见,已经产生标准缩进格式输出。(截取部分如下图)

这里,我们来认识一下BeautifulSoup类的部分元素:

在代码运行返回的html内容中,可以看见a标签里包含了

等子孙标签,其中包含了我们需要的热榜话题,利用这段代码我们可以获取热榜第一的信息进而获取榜单全部话题。

import requests

from bs4 import BeautifulSoup

pre={'User-agent':'Mozilla/5.0'}

try:

res=requests.get("https://www.zhihu.com/billboard",headers=pre)

res.raise_for_status

rep=res.text

except:

print("连接失败")

try:

soup=BeautifulSoup(rep,"html.parser")

con=soup.find_all('div',class_="HotList-itemTitle")

for i in range(len(con)):

print(con[i].text)

except:

print("获取失败")

我们观察到所有热榜话题所在标签name都是div,属性中都包含class="HotList- itemTitle"。我们使用bs4的find_all函数,返回一个包含许多元素的列表,然后利用text属性提取有用的字符逐个输出。

今天的爬虫入门我们就先讲到这里哦,小周下期继续给大家带来爬虫分享哦!

python爬虫教程入门-Python爬虫系列 - 入门教学相关推荐

  1. Python基础教程,Python入门教程

    Python 是一门上手简单.功能强大.通用型的脚本编程语言.Python 类库极其丰富,这使得 Python 几乎无所不能,网站开发.软件开发.大数据分析.网络爬虫.机器学习等都不在话下. 这套 P ...

  2. Python学习教程(Python学习路线_Python基础学习教程_Python视频教程):初学者新手怎样快速入门Python

    Python学习教程(Python学习路线_Python基础学习教程_Python视频教程):初学者新手怎样快速入门Python? 人生苦短,我用Python!!!短短几个字,现在在各大学习类平台随处 ...

  3. Python学习教程:Python爬虫抓取技术的门道

    Python学习教程:Python爬虫抓取技术的门道 web是一个开放的平台,这也奠定了web从90年代初诞生直至今日将近30年来蓬勃的发展.然而,正所谓成也萧何败也萧何,开放的特性.搜索引擎以及简单 ...

  4. Python学习教程(Python学习路线):Day14A-网络编程入门

    Python学习教程(Python学习路线):网络编程入门 计算机网络基础 计算机网络是独立自主的计算机互联而成的系统的总称,组建计算机网络最主要的目的是实现多台计算机之间的通信和资源共享.今天计算机 ...

  5. Python学习教程(Python学习路线):第12天—正则表达式

    Python学习教程(Python学习路线):正则表达式相关知识 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要,正则表达式就是用于描述这些规则的工具,换句话说正则表达式是 ...

  6. Python学习教程(Python学习路线):Day13-进程和线程

    Python学习教程(Python学习路线):进程和线程 今天我们使用的计算机早已进入多CPU或多核时代,而我们使用的操作系统都是支持"多任务"的操作系统,这使得我们可以同时运行多 ...

  7. python有趣的代码-python菜鸟教程,python好玩又简单的代码

    如果是零基础的话推荐你看以下几本书,入门来说都还不错:"笨办法"学Python(第3版)HeadFirstPython(中文版)父与子的编程之旅:与小卡特一起学Python pyt ...

  8. python基础教程 下载-Python基础教程第3版中国PDF电子书免费下载

    本书包括 Python 程序设计的方方面面:首先,从 Python 的安装开始,随后介绍了 Python 的基础知识和基本概念,包括列表.元组.字符串.字典以及各种语句:然后,循序渐进地介绍了一些相对 ...

  9. 2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?

    2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?编程界的王者是渐落寞的Java还是大火的Python? 是不是你们也喜 ...

  10. python黑马教程ppt_,python基础教程 PPT

    python基础教程 PPT Python我这里有Python编开发,进阶,化,实战等系列视频教程,还有安装包,素材,代码内容,这里就不一一说了,全套内容一共300G左右,非常的详细,需要的请到网盘下 ...

最新文章

  1. 逃离湾区,下一站是哪里?西雅图 PK 奥斯汀
  2. 深度学习-Tensorflow2基础知识
  3. 信息系统项目管理师:第1章:信息化与信息系统(4)-重点汇总
  4. CodeForces - 1207F Remainder Problem(分块)
  5. python rsa 公钥解密_python使用rsa库做公钥解密(网上别处找不到)
  6. cesium 局部加载_Cesium(四)常用代码总结
  7. 最优布线问题(信息学奥赛一本通-T1349)
  8. Jenkins报错Error fetching remote repo 'origin'真正解决办法
  9. 自己动手写个小框架之三
  10. 四大猛壳之一的VMProtect轻松保护你的程序
  11. java类型的对象可以存储属性_重识JVM(一)-类与对象在JVM中是如何存储的
  12. 一道学吧上的题 ^ 题目:不允许重复的实验 - 从数字1、2、3、4、5中随机抽取3次数字(不允许重复)组成一个三位数,则其各位数字之和等于n的概率为________ 输入整数 输出一个小数(保留
  13. 在线教学试卷讲评利器——屏幕画笔
  14. hackerrank刷题
  15. OpenGL ES API(绑定shader)
  16. 硬件工程师常用网站-芯片手册免费下载
  17. C# - 2017微软校园招聘笔试题 之 MS Recognition[待解决]
  18. 如何根据vin码查询_车架号查询-VIN查询-车辆识别码查询-宜配网
  19. HT366 具有防破音功能的2×20W立体声D类音频功放IC
  20. 开关电源:效率与VOUT的关系

热门文章

  1. python sorted key=str.lower_Python——sorted()函数
  2. 蓝牙连接不上车要hfp_蓝牙耳机的音质由什么因素决定?价格高的蓝牙耳机音质一定好吗?...
  3. 几个数判断大小_许栩原创2020读书笔记2《魔鬼数学》:极小数的两倍仍然是极小数...
  4. 开发日记-20190925 关键词 试错的一天
  5. 开发日记-20190725 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 15
  6. 神经网络和反向传播算法——反向传播算法本质上是随机梯度下降,链式求导法则而来的...
  7. influxdb入门——和mongodb一样可以动态增加字段
  8. 随机生成50个字段的elasticsearch的测试程序输入
  9. redis 集群 及 管理初步
  10. 315 · Istio1.1 功能预告,真的假不了