时间:2023-03-14 07:16:01 | 来源:电子商务
时间:2023-03-14 07:16:01 来源:电子商务
requests: 获取网络数据
lxml: 解析html等格式文件的数据
from lxml import etreeimport requests# 要爬取的url,注意:在开发者工具中,这个url指的是第一个urlurl = "https://www.bilibili.com/v/popular/rank/all"# 模仿浏览器的headersheaders = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36"}# get请求,传入参数,返回结果集resp = requests.get(url,headers=headers)# 将结果集的文本转化为树的结构tree = etree.HTML(resp.text)# 定义列表存储所有数据dli = []# 遍历所有数据for s in range(1,101): li = [] #根据树的路径找到对应的数据集 num = tree.xpath("/html/body/div[3]/div[2]/div[2]/ul/li["+str(s)+"]/div[1]/text()") # 获取热搜排序 name = tree.xpath("/html/body/div[3]/div[2]/div[2]/ul/li["+str(s)+"]/div[2]/div[2]/a/text()")# 获取标题 url = tree.xpath("/html/body/div[3]/div[2]/div[2]/ul/li["+str(s)+"]/div[2]/div[2]/a/@href")#获取链接 look = tree.xpath("/html/body/div[3]/div[2]/div[2]/ul/li["+str(s)+"]/div[2]/div[2]/div[1]/span[1]/text()")# 获取播放量 say = tree.xpath("/html/body/div[3]/div[2]/div[2]/ul/li["+str(s)+"]/div[2]/div[2]/div[1]/span[2]/text()") # 获取评论量 up = tree.xpath("/html/body/div[3]/div[2]/div[2]/ul/li["+str(s)+"]/div[2]/div[2]/div[1]/a/span/text()") # 获取up主 score = tree.xpath("/html/body/div[3]/div[2]/div[2]/ul/li["+str(s)+"]/div[2]/div[2]/div[2]/div/text()") # 获取综合得分 #获取数据集中的元素 li.append(num[0]) li.append(name[0]) li.append(url[0]) li.append(look[0]) li.append(say[0]) li.append(up[0]) li.append(score[0]) dli.append(li)# 打印数据for dd in dli: print(dd)
# 导入requests第三方库,导入报错则需要安装该库import requests# 要爬取的url,注意:在开发者工具中这个时候是要找数据对应的url,而不是第一个urlurl = "https://api.bilibili.com/x/space/arc/search"# 模仿浏览器的headersheaders = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36"}# 需要的参数params = { "mid": 387694560, "pn": 1, "ps": 25, "index": 1, "jsonp": "jsonp"}# 调用get方法,传入参数,返回结果集resp = requests.get(url,headers=headers,params=params)# 将结果以转化成js格式js = resp.json()# 获取js中我们需要的数据集infos = js['data']['list']['vlist']# 以下代码为遍历数据bli = []for info in infos: li = [] author = info['author'] bvid = info['bvid'] pic = info['pic'] title = info['title'] li.append(author) li.append(bvid) li.append(pic) li.append(title) bli.append(li)# 输出完整数据for ll in bli: print(ll)
运行结果如下:/text()
/@属性名称
关键词:数据,文教