猫史档案馆


Python教程系列 2.爬虫

用户:JUST_workshop官方JUST_workshop官方查看:1 回复:3 评论:1 创建时间:2022-12-25T13:44:23


今日课题·爬虫

昨天氵了一期逐字输出,今天就来正经的讲一讲爬虫

首先,来看一下爬虫的定义:

网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫

初步了解了爬虫是什么之后,再来分析一下爬虫的步骤:

我一般将其分为四步:

1. 分析网页原代码

2. 抓取网页信息

3. 解析提取所需信息

4. 储存爬到的信息

今天的任务便是从指定网页中爬出所有狗的名字

先来完成第一步,分析:

按F12打开开发者工具,分析网页:

center_image

分析完后再来第2步,爬取:

首先导入requests:

import requests as rq

再查看网页情况:

response=rq.post(url="https://static0.xesimg.com/pythonweb/dogs.html")
print( response.status_code )

center_image

这时会输出401如上图(访问失败),所以学要改换get函数:

response=requests.get(url="https://static0.xesimg.com/pythonweb/dogs.html")
print( response.status_code )

center_image

此时就成功了,接下来进行一个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)

来看一下结果:

center_image

print出的是一串长的离谱的源代码,此时人工筛选显然不现实,就有了第3步,解析:

解析有两种方法:正则表达式和第三方库,鉴于正则表达式对于大家太难、太繁琐,今天我就讲第三方库的方法

我用的是第三方库BeautifulSoup4,也称bs4,

如需正则表达式,请看网址:https://www.喵51.net/article/238575.htm

老规矩,先导入:

import bs4

接着进行数据解析,以下为函数运用,记住用法即可(主要是不知道怎么讲)emotion_笑cry

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)

这一期到此圆满结束,还是那句话:

希望对大家有用。。。


回复

上一页1 页 / 共 1下一页
宇之尘埃宇之尘埃

不废

点赞0


评论


宇之尘埃宇之尘埃

沙发

点赞0


评论


JUST_workshop官方JUST_workshop官方

**编程猫!!!我的网址!!!***

点赞0


评论