目录
content:内容
requests:请求
parser:解析器
soup:汤
findAll:查找全部
attrs:属性
status code: 状态代码
requests库:
用于获取HTML网页的源码
import requests
# response = requests.get("https://www.bilibili.com/?spm_id_from=444.41.0.0")
# print(response) # Response类的实例,代表服务器返回给我们的实例
# print(response.status_code) # 查看状态码
# 爬取哔哩哔哩
# 手动设定请求头,将代码请求伪装成用户请求
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}
bilibili = requests.get("https://www.bilibili.com/?spm_id_from=444.41.0.0", headers=headers)
print((bilibili.status_code)) # 查看状态码
print(bilibili.text) # 拿到HTML原码
BeautifulSoup库:
用于解析HTML网页源码
from bs4 import BeautifulSoup
import requests
# content:内容 requests:请求 parser:解析器 soup:汤 findAll:查找全部 attrs:属性
# 发送get请求,得到网页的HTML后,就可以从中提取数据,获得信息,但手动找信息效率极低
# python有个用来做HTML解析的库——Beautiful Soup(第三方库,如requests一样,需安装)
content = requests.get("https://www.qidian.com/").text # 通过get请求获得网页的HTML并作为字符串存储在content变量中
soup = BeautifulSoup(content,
"html.parser") # 将这个content传入BeautifulSoup的构造函数里. 调用BeautifulSoup这个构造函数后,会获得一个实例对象,soup是一个实例对象,所以可以调用BeautifulSoup的全部属性和方法,这个soup就是HTML内容,
# BeautifulSoup除了解析HTML之外,还能解析其他类型的内容,所以除了需要传入解析的内容,还需要传入第二个参数去指定解析器
# 解析HTML的话可以传入html.parser, BeautifulSoup吧看起来复杂的HTML内容解析成树结构,让搜索和修改HTML结构变得更加容易
#
# print(soup.p) # 查看HTML里第一个<p>元素,即文本段落元素.如果p标签里还有其他内容,会全部返回.
# print(soup.img) # 查看第一个图片元素.
# findAll()方法:能根据标签,属性等找出所有符合要求的元素. 第一个参数传入要找的标签(如soup.findAll("p"),表示找p标签), 第二个参数为可选参数attrs,赋值为一个字典,传入键值对,键值对为想要找的属性和值.如soup.findAll("p",attrs={"class":"price_color})
# string()方法: 将标签中的字符串取出来
booknames = soup.findAll('a', attrs={"data-eid": "qd_A117"}) # 查找a标签,并在其中找符合需求的键值对
a = 1 # 定一个变量记录数的排名
for bookname in booknames: # 将每个取到的值进行循环
if bookname.string == None: # 判断内容的字符串是不是为空,如果是图片则为空
continue # 为空则跳过
else:
print(f"第{a}名: {bookname.string}") # 输出书的排行
a += 1
if a >= 16: # 因为排行榜只有15本书,所以当循环进行至16次时,重置次数
a = 1
print()
697

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



