Python爬虫系列,入门教学适合新手小白、零基础!

今天给大家带来的是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。下面我们尝试修改请求头伪装成浏览器:
image

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学习资料,包含了视频、源码、课件,希望能够帮助到那些不满现状,想提示自己却又没用方向的朋友,也可以和我一起来交流呀!

编辑资料、学习路线图、源代码、软件安装包等!【点击这里】领取!
在这里插入图片描述
在这里插入图片描述

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python爬虫是一种自动化获取互联网信息的技术,它可以帮助我们快速地从网页中提取所需的数据。以下是Python爬虫新手入门教学的步骤: 1. 安装Python和相关库 首先需要安装Python和相关的库,如requests、beautifulsoup4、lxml等。可以使用pip命令来安装这些库。 2. 确定爬取目标 确定需要爬取的目标网站和所需的数据。可以使用浏览器的开发者工具来查看网页的源代码,确定需要爬取的数据在哪个标签中。 3. 发送HTTP请求 使用requests库发送HTTP请求,获取网页的源代码。可以使用get或post方法来发送请求。 4. 解析HTML 使用beautifulsoup4库解析HTML,提取所需的数据。可以使用find、find_all等方法来查找标签。 5. 存储数据 将提取的数据存储到本地文件或数据库中。可以使用csv、json、sqlite等库来存储数据。 以下是一个简单的Python爬虫示例,用于获取豆瓣电影Top250的电影名称和评分: ```python import requests from bs4 import BeautifulSoup url = 'https://movie.douban.com/top250' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'lxml') movies = soup.find_all('div', class_='hd') for movie in movies: name = movie.a.span.text.strip() rating = movie.parent.find('span', class_='rating_num').text.strip() print(name, rating) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值