爬虫学习笔记
什么是爬虫
可以理解成就是模拟上网操作,向浏览器发送请求并获取响应。
第一步:用Requests模块连接上网址(发送请求并确认)
缺少该模块的可以cmd中安装
pip install requests
使用requests.get()发送请求,并打印结果。(200则成功)
import requests
url = "https://www.baidu.com/"
response=requests.get(url)
print(response)

有时访问https时可能报错"SSL Error",加上"verify=False"即可。
response=requests.get(url,verify=False)
(可以跟着vscode的修复提示操作)
tips:个别视频可能强调了"url = "的等于号前后要加空格,但是实际操作一下会发现仍然正常运行,只是这样写更规范、好读而已。
第二步:用BeautifulSoup模块得到网页信息并转换
缺少该模块的可以cmd中安装
pip install bs4
收到的网页数据主要是html,该模块可以自动更正不标准的html代码
以下是一个示例:
从bs4中导入模块:
from bs4 import Beautifulsoup
(此处报错可以参考:https://blog.csdn.net/yanyucsdn/article/details/143805779
如果有多个python,可以和我一样检查对应版本:

这里python版本是3.10.6且正常导入,而之前在vscode中选择的解释器是推荐的3.15.2(64-bit),修改为对应版本即可。
或者直接在cmd对应版本中运行。这里直接print(soup)输出原始HTML。(完整代码放在本节最后)

也可以print(soup.prettify()),将解析后的 HTML 内容进行格式化输出,添加适当的缩进和换行,使代码更具可读性。
输出如图。原来的HTML的 body>是缺少左尖括号的,输出时补全了。

完整代码
from bs4 import BeautifulSoup
html='''
<title>bs测试</title>
body>
<h1>这是h1</h1>
<p class="title"><b>这是b</b></p>
<p class="story">
'''
soup=BeautifulSoup(html,'lxml') #函数是html对应的变量和解析器,如lxml;
print(soup.prettify())
#print(soup)
第三步:利用soup的find_all函数筛选特定标签
在第二步的基础上:
#查询h1标签(<h1>一级标题)内容:
#括号内可以直接写成("h1"),省略"name="
content_h1=soup.find_all(name="h1")
输出结果:

第四步:对筛选内容去除标签,只输出内容
for循环遍历内容,再用string属性去除标签:
for content in content_all:
string=content.string
实战
爬取网站(夜曲编程——寻梦环游记)中的文字内容:
#引入所需库
import requests
from bs4 import BeautifulSoup
url = "https://nocturne-spider.baicizhan.com/2020/09/02/coco/"
#对目标url发送请求
response = requests.get(url)
#将收到的html文本转化为BeautifulSoup对象
soup = BeautifulSoup(response.text, 'lxml')
#查找所有p标签
content_all = soup.find_all('p')
#遍历p标签并提取内容
for content in content_all:
string=content.string
if string is not None:
print(string)
运行结果如下:

告一段落啦!下次见

1757

被折叠的 条评论
为什么被折叠?



