Python作为这几年的明星编程语言,可以说是最出圈的一门语言。有许多不是从事计算机行业的人都听说过python,小破站、各种搜索引擎的广告轰炸也是让人防不胜防。今天就来体验一下。。。
Python的发展方向主要分为以下几点:
- Web开发
- 网络爬虫
- 数据分析
- 人工智能和机器学习
- 自动化测试
- 自动化运维
- …
今天我们就来体验一下爬虫,正所谓“爬虫爬的好,牢饭不会少。”
环境配置
我们去官网选择好Python版本进行下载,一键安装即可。记得要配置环境变量。www.python.org/
然后在cmd中输入python命令。
看见对应的python信息即环境已经安装完毕。
Requests库
python中的库概念相当于Java中一个个jar包依赖。爬虫,作为一次在互联网上的虫子,我们首先要上网。当然Python也提供传统的网络编程,不过python最方便的就是已经存在好了各种各样的库。所以我们这次就直接安装下载Requests
库。requests.readthedocs.io/en/latest/
安装也很方便,类似前端Vue使用npm install命令,python使用的是pip
工具。
python -m pip install requests
根据文档我们可以发现使用requests.get()
是发送get请求,使用requests.post()
是发送post请求。
我们使用get请求百度。
import requests
response = requests.get("https://www.baidu.com")
print(response.status_code)
print(response.text)
- 通过status_code查看状态码
- 通过text查看响应的内容
- 更多的可以查看官方文档api
接着我们来访问一下豆瓣电影前250榜单
我们把地址变成movie.douban.com/top250
import requests
response = requests.get("https://movie.douban.com/top250")
print(response.status_code)
print(response.text)
可以发现返回的状态码为418
,这个是什么意思呢?我们搜索一下
I’m a teapot.
我只是一个杯具(茶壶)。所以无法处理请求,服务器知道你不是正常行为访问网址的,算一个梗。
这是因为我们使用get请求访问没有配置其他的Http参数,而是使用库默认的导致被网站的反爬虫机制给识别出来了。所以我们要模拟的像我们人通过浏览器访问这个页面一样,这里我们要给它的请求头加上User-Agent即可。那么我们要加上什么值呢?很简单,打开浏览器访问一个页面,然后使用开发者工具,随便查看一个网络请求,将它这个值复制过来。。。
这个请求头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)
成功访问~
BeautifulSoup库
当我们能使用代码正确访问网页,并且拿到网页信息,那么剩下的就是解析这些html代码,从中拿到我们所需要的数据了。
Beautiful Soup 是一个 可以从 HTML 或 XML 文件中提取数据的 Python 库。它能用你喜欢的解析器和习惯的方式实现 文档树的导航、查找、和修改。它会帮你节省数小时甚至数天的工作时间。可以称为“靓汤”。
安装方式也十分的简单
pip install beautifulsoup4
使用起来也很简单,只要把我们请求返回的响应内容传入BeautifulSoup,并设置为html.parser
解析即可。因为BeautifulSoup同时也支持解析xml。
同时如果我们想获取到页面的第一个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)
我们可以发现它存在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)
soup.findAll("div", attrs={"class": "hd"}
找到页面中所有div标签并且class属性为hd的。d.find("span", attrs={"class": "title"})
在1的前提下,找到里面第一个符合为span标签并且class属性为title的。span.string
获取span标签包含的值。
我们成功获取到了这一页的所有电影名,那么怎么获取到剩下的电影名呢?我们点击第二页
它是通过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)
成功获取到豆瓣电影Top250的电影名。
这一路用下来,发现使用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%免费
】