作业
😯Python作业😯#Python#
使用requests+ BeautifulSoup两个库。编写脚本,抓取百度主页。
要求:运行结果打印出百度主页的“意见反馈”四个汉字
[]代码中不允许出现汉字。
[]两个库都需要用到。
[]周五晚上之前在此交作业。
[]交作业时,把代码贴出。注释中加上自己名字
好了,开始水
那是一天晚上,我…
好吧!我打完王者荣耀后发现群里在讨论request库和BeautifSoup库。翻了群消息才发现学长布置了一道作业!看了作业和感觉有点崩溃,我就是给混子啊!啥也不会啊!
不水了,不然学长要打人了
python代码不会,抄也不会吗!首先百度requests库,各种文章(废话)一大堆,总结为一句:主要就是用来爬取各种网页的内容用的。
requests
下载requests库
最简单直接的方法!pip快速安装pip install requests
win+R组合键打开命令行,然后直接输入就行。
作业中需要requests库干什么
根据作业描述,我们首先应该把百度网页给爬下来!
import requests
url = 'https://www.baidu.com/index.php?tn=monline_3_dg'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
' AppleWebKit/537.36 (KHTML, like Gecko)'
' Chrome/91.0.4472.77 Safari/537.36 Edg/91.0.864.37'}
r = requests.get(url, headers=headers)
print(r.text)
这是我的代码,仅仅是简单的爬取网页用的,更多有趣的功能我也不太会可以看看这个网页,里面详细的介绍了requests库的一些有趣的功能。
第一句import requests
是加载requests库的
第二句url = 'https://www.baidu.com/index.php?tn=monline_3_dg'
某度的网址。可以试试换上各种不同的网址,比如你懂的!
第三句headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' ' AppleWebKit/537.36 (KHTML, like Gecko)' ' Chrome/91.0.4472.77 Safari/537.36 Edg/91.0.864.37'}
这一句是因为有些网站不允许requests库爬取,这一句是模仿浏览器爬取网址内容。
首先在百度页面用F12键打开,在网络页面按照提示Ctrl+R键打开如下页面
按照如图所示步骤找到headers
BeautifulSoup
安装这个库也是pip安装
指令:pip install beautifulsoup4
要注意的是这个库还要配着lxml使用
指令:pip install lxml
作用
按照我暂时的理解,这个库就是用来提取lxml文章的内容的,我们用requests爬取到的文章是lxml格式,往往都是一大堆代码。这时就要用BeautifulSoup库的功能提取出自己想要的内容。
import requests
from bs4 import BeautifulSoup
url = 'https://www.baidu.com/index.php?tn=monline_3_dg'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
' AppleWebKit/537.36 (KHTML, like Gecko)'
' Chrome/91.0.4472.77 Safari/537.36 Edg/91.0.864.37'}
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.content, 'lxml')
data = soup.find("div", class_="s-bottom-layer-content").contents[4]
# 通过‘contents[4]‘ 选择,得到结果
print(data.string)
代码如上
第二句:from bs4 import BeautifulSoup
加载BeautifulSoup
第六局:soup = BeautifulSoup(r.content, 'lxml')
创建 beautifulsoup 对象,其中html 可以是字符串,也可以是句柄。各种详细介绍可以看看这篇文章
第七句:data = soup.find("div", class_="s-bottom-layer-content").contents[4]
主要用来选择自己需要的内容括号里的内容根据自己需要而定。