用户:
JUST_workshop官方查看:1 回复:3 评论:1 创建时间:2022-12-25T13:44:23
今日课题·爬虫
昨天氵了一期逐字输出,今天就来正经的讲一讲爬虫
首先,来看一下爬虫的定义:
网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫
初步了解了爬虫是什么之后,再来分析一下爬虫的步骤:
我一般将其分为四步:
1. 分析网页原代码
2. 抓取网页信息
3. 解析提取所需信息
4. 储存爬到的信息
今天的任务便是从指定网页中爬出所有狗的名字
先来完成第一步,分析:
按F12打开开发者工具,分析网页:

分析完后再来第2步,爬取:
首先导入requests:
import requests as rq
再查看网页情况:
response=rq.post(url="https://static0.xesimg.com/pythonweb/dogs.html")
print( response.status_code )

这时会输出401如上图(访问失败),所以学要改换get函数:
response=requests.get(url="https://static0.xesimg.com/pythonweb/dogs.html")
print( response.status_code )

此时就成功了,接下来进行一个headers传参伪装浏览器并print源代码:
head = {
"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11"
}
response = rq.get(url="https://static0.xesimg.com/pythonweb/dogs.html",headers=head)
print(response.text)
来看一下结果:

print出的是一串长的离谱的源代码,此时人工筛选显然不现实,就有了第3步,解析:
解析有两种方法:正则表达式和第三方库,鉴于正则表达式对于大家太难、太繁琐,今天我就讲第三方库的方法
我用的是第三方库BeautifulSoup4,也称bs4,
如需正则表达式,请看网址:https://www.喵51.net/article/238575.htm
老规矩,先导入:
import bs4
接着进行数据解析,以下为函数运用,记住用法即可(主要是不知道怎么讲)![]()
res.encoding = res.apparent_encoding
soup = bs4.BeautifulSoup(res.text, "lxml")
tags = soup.find_all("div", class_="tit")
#还是讲一下吧 tags = soup.find_all("div", class_="tit") 就相当于寻找所有匹配项#
最后一步,保存:
还是有两种方法:
1. 文档式
2. 云数据
由于云数据需要服务器,本人买不起,自然不会,所以教大家用纯文本的txt保存
直接上代码:
with open("结果.txt","a") as fp:
for i in tags:
fp.write(i)
这里我直接用'with open xxx as xxx'就省去了close这一步,以求快捷
嗯。。。又一期教程结束了,感觉还是很氵,那还是给大家上一下代码:
import requests
import bs4
head = {
"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11"
}
url = "https://static0.xesimg.com/pythonweb/dogs.html"
res = requests.get(url, headers=head)
res.encoding = res.apparent_encoding
soup = bs4.BeautifulSoup(res.text, "lxml")
tags = soup.find_all("div", class_="tit")
for t in tags:
print(t.text)
with open("结果.txt","a") as fp:
for i in tags:
f.write(i)
这一期到此圆满结束,还是那句话:
希望对大家有用。。。