携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情
光阴似箭,日月如梭,转眼间已经学习编程三年有余,而最近在b站学习如何实现爬虫。 让我本人拓展一下,基本的思路是使用python+mongoDB的思路实践爬虫,此文用作记录,供复习用。
项目思路
python爬虫一共分为三个步骤,那就是:
- 爬取网页
- 解析数据
- 保存数据 下面开始一一实践。。。
Let's Go!
爬取网页
爬取网页首先我们需要构建一个request对象,用作发送请求。
构造请求需要导入一个名为urllib的包
什么是urllib?
urllib是一个包含了数个与URL请求有关的python包
它包含了四个主要模块:
urllib.request:打开和阅读URL
urllib.error:关于urllib.request异常
urllib.parse:用于解析URL
urllib.robotparser:解析robots.txt文件
更多解析===========>文档点我
构建的resquest的代码如下:
# 模拟请求头
# 构建请求 构建requset对象
` head = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"
}
# request = urllib.request.Request(url, headers=head)
request = urllib.request.Request(url, headers=head)
解析respone:
try:
response = urllib.request.urlopen(request)
html = response.read().decode("utf-8")
# print(html)
except urllib.error.URLError as error:
print("urllib.error.URLError!")
print(error.__str__())
except urllib.error.HTTPError as error:
print("urllib.error.HTTPError!")
print(error.__str__())
except socket.timeout as error:
print("socket.timeout!")
print(error.__str__())
这里有几个注意的点:
html = response.read().decode("utf-8")
这行代码要注意设定解码格式,哪怕在文件首行加上了# -*- encoding: utf-8 -*-
还是需要设定解码的。- 出于职业习惯,我的ide是VScode 然后使用的是code runner插件运行程序。
这时候如果进行了print(html)
可能会出现乱码。这时候需要在检查code runner的编码方式。
修改coderunner的编码格式
- 在拓展里找到coderunner,点击设置
- 在弹出的界面中找到Executor Map并单击"在settings.json中编辑",打开用户设置的json文件。
- 加入代码:
"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
保存即可
下集预告
完成了请求封装之后,下一步的解析数据该怎么处理呢,容我暂时卖个关子,明天待我揭晓!
如果本文对您有帮助,可以给一个免费的赞吗?谢谢!