最出圈的编程语言Python爬虫初体验

本文介绍了Python作为热门编程语言的现状,重点讲述了如何利用Python进行网络爬虫,包括环境配置、Requests库的使用、模拟浏览器访问以避免反爬机制,以及BeautifulSoup库解析HTML获取数据的过程。
摘要由CSDN通过智能技术生成

Python作为这几年的明星编程语言,可以说是最出圈的一门语言。有许多不是从事计算机行业的人都听说过python,小破站、各种搜索引擎的广告轰炸也是让人防不胜防。今天就来体验一下。。。

Python的发展方向主要分为以下几点:

  1. Web开发
  2. 网络爬虫
  3. 数据分析
  4. 人工智能和机器学习
  5. 自动化测试
  6. 自动化运维

今天我们就来体验一下爬虫,正所谓“爬虫爬的好,牢饭不会少。”

环境配置

我们去官网选择好Python版本进行下载,一键安装即可。记得要配置环境变量。www.python.org/

image.png

然后在cmd中输入python命令。

image.png

看见对应的python信息即环境已经安装完毕。

Requests库

python中的库概念相当于Java中一个个jar包依赖。爬虫,作为一次在互联网上的虫子,我们首先要上网。当然Python也提供传统的网络编程,不过python最方便的就是已经存在好了各种各样的库。所以我们这次就直接安装下载Requests库。requests.readthedocs.io/en/latest/

image.png

安装也很方便,类似前端Vue使用npm install命令,python使用的是pip工具。

image.png

python -m pip install requests

image.png

根据文档我们可以发现使用requests.get()是发送get请求,使用requests.post()是发送post请求。

我们使用get请求百度。

image.png

import requests

response = requests.get("https://www.baidu.com")

print(response.status_code)
print(response.text)


  • 通过status_code查看状态码
  • 通过text查看响应的内容
  • 更多的可以查看官方文档api

接着我们来访问一下豆瓣电影前250榜单

image.png

我们把地址变成movie.douban.com/top250

image.png

import requests

response = requests.get("https://movie.douban.com/top250")

print(response.status_code)
print(response.text)

可以发现返回的状态码为418,这个是什么意思呢?我们搜索一下

image.png

I’m a teapot.

我只是一个杯具(茶壶)。所以无法处理请求,服务器知道你不是正常行为访问网址的,算一个梗。

这是因为我们使用get请求访问没有配置其他的Http参数,而是使用库默认的导致被网站的反爬虫机制给识别出来了。所以我们要模拟的像我们人通过浏览器访问这个页面一样,这里我们要给它的请求头加上User-Agent即可。那么我们要加上什么值呢?很简单,打开浏览器访问一个页面,然后使用开发者工具,随便查看一个网络请求,将它这个值复制过来。。。

image.png

image.png

image.png

这个请求头python需要的是一个字典,即对应我们Java里面的HashMap,是一个Key-Value结构。参数名为headers

  • Key就是User-Agent
  • Value就是传的值
import requests

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"
}

response = requests.get("https://movie.douban.com/top250", headers=headers)

print(response.status_code)
print(response.text)

image.png

成功访问~

BeautifulSoup库

当我们能使用代码正确访问网页,并且拿到网页信息,那么剩下的就是解析这些html代码,从中拿到我们所需要的数据了。

Beautiful Soup 是一个 可以从 HTML 或 XML 文件中提取数据的 Python 库。它能用你喜欢的解析器和习惯的方式实现 文档树的导航、查找、和修改。它会帮你节省数小时甚至数天的工作时间。可以称为“靓汤”。

安装方式也十分的简单

pip install beautifulsoup4

使用起来也很简单,只要把我们请求返回的响应内容传入BeautifulSoup,并设置为html.parser解析即可。因为BeautifulSoup同时也支持解析xml。

image.png

同时如果我们想获取到页面的第一个meta标签的,内容那么只要使用find()传入标签名即可,默认是找到第一个符合的标签内容。

import requests
from bs4 import BeautifulSoup

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"
}

response = requests.get("https://movie.douban.com/top250", headers=headers)
print(response.status_code)
print(response.text)
soup = BeautifulSoup(response.text, "html.parser")

print(soup.find("meta"))

当然我们不能忘了引入该库。

爬虫抓取豆瓣电影Top250电影名

通过使用这两个库,我们应该就能实现一些简单的数据获取了。这里我们想获取豆瓣电影Top250的电影名。那么我们就应该分析这些电影名在页面上在什么位置呢?

feb2ed66744~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=2560&h=1407&s=395957&e=png&b=fefefe)

image.png

我们可以发现它存在div标签class为hd下,span标签class名为title里面,我们只要取第一个名字即可,即第一个title。

import requests
from bs4 import BeautifulSoup

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"
}

response = requests.get("https://movie.douban.com/top250", headers=headers)
soup = BeautifulSoup(response.text, "html.parser")

div = soup.findAll("div", attrs={"class": "hd"})

for d in div:
    span = d.find("span", attrs={"class": "title"})
    print(span.string)

  1. soup.findAll("div", attrs={"class": "hd"} 找到页面中所有div标签并且class属性为hd的。
  2. d.find("span", attrs={"class": "title"}) 在1的前提下,找到里面第一个符合为span标签并且class属性为title的。
  3. span.string获取span标签包含的值。

image.png

我们成功获取到了这一页的所有电影名,那么怎么获取到剩下的电影名呢?我们点击第二页

image.png

movie.douban.com/top250?star…

它是通过start参数来控制的,那么我们只要将上面的封装成一个方法,循环调用10次,并且改变对应的start参数值即可。当然我们也发现其实这个span只要取第一个即可,因为这三个都有class为title,所以代码可以进行修改。

import requests
from bs4 import BeautifulSoup

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"
}

def douban(page: int) -> None:
    response = requests.get(f'https://movie.douban.com/top250?start={page * 25}&filter=', headers=headers)

    print(response.status_code)

    soup = BeautifulSoup(response.text, "html.parser")

    all_titles = soup.findAll("div", attrs={"class": "hd"})

    for title in all_titles:
        # print(title)
        print(title.find("span").string)

for i in range(10):
    douban(i)

image.png

成功获取到豆瓣电影Top250的电影名。

image.png

这一路用下来,发现使用python的确是非常简单的,拥有许多强大的库,可以使用非常短的代码且方便的实现小功能。

当然这只是一个初体验,不能说明爬虫就是这么简单。只是对比Java、C、C++实现起来是相对简单方便不少。 所以—— 人生苦短我用Python~~~

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码免费领取保证100%免费

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值