Python爬虫小实例
爬取百度首页获取所有的a链接,从爬取到解析和存储,整体很简单的一个入门小测试,我用的集成开发环境是Pycharm。具体如下步骤:
- 第一步先下载安装所需要的库,requests和BeautifulSoup4
pip install requests
pip install bs4
#依次安装执行
- 引入requests和BeautifulSoup4库
import requests
from bs4 import BeautifulSoup
- 所有的库都导入到开发环境就可以使用了,我先用requests先得到百度的网页这个encoding = "utf-8"是编码格式,必须设置,不然容易编码错误,不能显示中文,我在这碰壁好长时间。(现在python3默认UTF-8编码)
web_url = requests.get("http://www.baidu.com")
web_url.encoding = "utf-8"
- 现在就把获得网页源代码保存在web_url中,现在可以使用bs4(BeautifulSoup4)来解析网页,获取我们需要的数据了
`
这种就是源代码,数据和代码都存在,解析就是把把不需要的代码去掉,把需要的数据保留下来
- 使用BeautifulSoup解析得到的网页源代码
web_page = BeautifulSoup(web_url.text, "lxml")
web_page_a = web_page.find_all("a")
web_page.encoding = "utf-8"
web_url这个参数就是获得网页的地址,加上(.text方法)就是获得源代码,参数lmxl是一种解析器,不写也可以使用自带的解析器,lxml解析器速度更快,如果使用lxml需要安装,因为这不是python标准库提供的
pip install lxml
加载安装lxml解析器命令
6. 源代码解析之后就可以获得网页的全部数据了,但是我需要的只是网页中所有的a超链接标签,所以需要做出一些设置
web_page_a = web_page.find_all("a")
find_all(“a”)获取web_page的所有的a标签,然后存储到web_page_a变量中
- 接下来就是把需要的数据存储到本地文件(.txt)中。,在此需要先创建这个文件。
file = open("test.txt", "a", encoding="utf-8")
使用open方法打开test.txt,如果没有这个文件,默认会创建一个,"a"参数表示文件是以追加的方式写入数据,"r"是只读的方式,"w"是只写的方式,encoding="utf-8"是写入文件的编码方式,设置编码后,就不会再弹出错误了
for a in web_page_a:
file.write(str(a.text))
file.close()
这个我使用的一个for循环,因为我的find_all放法得到的是一个列表,所以我用了(.text),因为使用的追加方式写入数据,所以每次循环执行后,数据都会存在,如果是只写的话,那么数据只会是最后一遍循环的数据,而不是全部的超链接数据。最后file.close()是关闭文件,整个实例就完成了
最后结果就是下图啦
在test文件中就有了爬取的数据信息
本人初学者,技术基础比较菜,如果哪里部分内容出错,对你产生误导,在此说一声抱歉,也接受留言批评更改。
本篇博客首页图片来源于网络,如有侵权请联系我删除。
本篇博客文章更新于2022.3.31晚22:46分