初始爬虫11

1.斗鱼selenium爬取

# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
import timeclass Douyu(object):def __init__(self):self.url = 'https://www.douyu.com/directory/all'self.driver = webdriver.Chrome()self.driver.implicitly_wait(10)  # 设置隐式等待,最大等待10秒def parse_data(self):room_list = self.driver.find_elements(By.XPATH, '//*[@id="listAll"]/section[2]/div[2]/ul/li/div')print(len(room_list))data_list = []# 遍历房间列表,从每一个房间节点获取数据for room in room_list:temp = {}# temp['title'] = room.find_element(By.XPATH, './div[2]/div[1]/a').text# temp['type'] = room.find_element(By.XPATH, './div[2]/div[2]/span/a').text# temp['owner'] = room.find_element(By.XPATH, './div[1]/div/a/div/div[2]/div/div[1]/div').text# temp['num'] = room.find_element(By.XPATH, './div[1]/div/a/div/div[2]/div/div[2]/span').texttemp['picture'] = room.find_element(By.XPATH, './div[1]/picture/source[1]').get_attribute('srcset')# print(temp)data_list.append(temp)return data_listdef run(self):self.driver.get(self.url)total_rooms = 0last_count = 0  # 上一次获取的房间数量while True:# 滚动到页面底部self.driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')time.sleep(2)  # 等待页面加载新内容# 获取当前房间数据new_data = self.parse_data()total_rooms += len(new_data)print(f"Total rooms : {total_rooms}")# 检查当前房间数量if total_rooms == last_count:  # 如果新加载的房间数量没有增加,停止滚动print("No more new data to load.")breaklast_count = total_rooms  # 更新最后一次的房间数量print(f"Final total rooms fetched: {total_rooms}")self.driver.quit()  # 退出浏览器if __name__ == '__main__':douyu = Douyu()douyu.run()

2. request+mysql存储

import pymysql
import requests
from lxml import etree# 第一步:请求百度首页并提取内容
url = 'https://www.baidu.com/'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36'
}
response = requests.get(url, headers=headers)
html = etree.HTML(response.content.decode("utf-8"))# 提取文本和链接
classes = ["normal", "c", "color", "t"]
extracted_data = []for cls in classes:xpath_query = f'//div[contains(@class, "{cls}")]'elements = html.xpath(xpath_query)for element in elements:# 提取文本内容text = ''.join(element.xpath('.//text()')).strip()# 提取链接,假定链接是 a 标签的 href 属性link = element.xpath('.//a/@href')link = link[0] if link else "No link found"extracted_data.append((text, link))# 第二步:连接 MySQL 数据库
connection = pymysql.connect(host='localhost',  # 数据库地址user='root',  # MySQL 用户名password='991016',  # MySQL 密码database='test',  # 数据库名称charset='utf8mb4',  # 确保字符集是 utf8mb4cursorclass=pymysql.cursors.DictCursor  # 使用字典形式的游标
)try:with connection.cursor() as cursor:# 创建一个新表存储网页内容create_table_query = """CREATE TABLE IF NOT EXISTS web_content (id INT AUTO_INCREMENT PRIMARY KEY,text_content TEXT,link VARCHAR(255));"""cursor.execute(create_table_query)# 插入提取到的数据insert_query = "INSERT INTO web_content (text_content, link) VALUES (%s, %s)"cursor.executemany(insert_query, extracted_data)# 提交更改connection.commit()# 查询数据并验证是否成功存储cursor.execute("SELECT * FROM web_content")results = cursor.fetchall()for row in results:print(row)finally:connection.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/55549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超分辨率重构论文集合

《Detection of Tea Leaf Blight in Low-Resolution UAV Remote Sensing Images》 发表信息:发表于《IEEE TRANSACTIONS ON GEOSCIENCE AND REMOTE SENSING》2024 年,作者 Gensheng Hu 等,来自安徽大学等。核心内容 背景:茶叶枯萎…

Scala 字符串

Scala 字符串 Scala 是一种多范式的编程语言,它结合了面向对象和函数式编程的特点。在 Scala 中,字符串是不可变的,这意味着一旦创建了一个字符串,就不能更改它。Scala 字符串由 Java 字符串支持,因此 Scala 字符串的…

在线css像素px到Em的转换器

具体请前往:在线Px转Em工具--将绝对像素(px)长度单位转换为相对长度em

热补丁反调试API Hook—上跳/下跳

以 IsDebuggerPresent 函数为例,可以看到可以上跳(简单),也可以下跳(复杂)。 上跳: BYTE NewCodes[2] { 0xEB,0xF9 }; BYTE JmpCode[5] { 0xE9,0 }; BYTE oldCodes[2] { 0 };BOOL Mydebug() …

第三十八章 验证和解密入站消息 - 实例身份验证和 WS-Security

文章目录 第三十八章 验证和解密入站消息 - 实例身份验证和 WS-Security实例身份验证和 WS-Security检索安全标头元素FindByEncryptedKeySHA1()FindElement()FindLastElement() 检查签名确认 第三十八章 验证和解密入站消息 - 实例身份验证和 WS-Security 实例身份验证和 WS-S…

拿下奇怪的前端报错:某些多摄手机拉取部分摄像头视频流会导致应用崩溃,该如何改善呢?

现在有些手机更新的很激进,但是却没有很好的实现web规范,不支持facingMode配置来控制前后摄像头,只能根据序号切换,但拉取到某些设备的流会导致应用崩溃,这里就教一招如何尽可能的改善用户体验 至少不至于次次都崩溃&a…

普通人怎么才能实现时间自由和财富自由?

在快节奏的现代生活中,每个人都怀揣着对时间自由和财富自由的向往。尤其是对于普通人而言,这不仅仅是一种梦想,更是一种可以通过智慧和努力实现的生活方式。副业,作为主业之外的另一片天地,正逐渐成为实现这一梦想的重…

npx create-react-app react-basic 创建react 项目报错

npx create-react-app创建react 项目报错 npm error code ERESOLVE npm error ERESOLVE could not resolve npm error npm error While resolving: react-basic0.1.0 npm error Found: reactundefined npm error node_modules/react npm error react"*" from the …

63.5 注意力提示_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录注意力提示生物学中的注意力提示查询、键和值注意力的可视化使用 show_heatmaps 显示注意力权重代码示例 代码解析结果 小结练习 注意力提示 🏷sec_attention-cues 感谢读者对本书的关注,因为读者的注意力是一种稀缺…

Angular ng-state script 元素的生成机制介绍

ng-state 的生成过程是在 Angular SSR 中非常关键的部分。为了让客户端能够接管服务器渲染的页面状态,Angular 在服务器端需要将应用的当前状态保存下来,并将其嵌入到返回的 HTML 中。这样,客户端在接管时就可以直接使用这些状态,…

动手学深度学习(李沐)PyTorch 第 7 章 现代卷积神经网络

7.1 深度卷积神经网络(AlexNet) 在计算机视觉中,直接将神经网络与其他机器学习方法进行比较也许不公平。这是因为,卷积神经网络的输入是由原始像素值或是经过简单预处理(例如居中、缩放)的像素值组成的。但…

深圳楼市国庆“狂欢”:从“冷清”到“火爆”,谁导演了这场大戏

你知道吗?深圳那楼市,前面冷清得跟个大森林似的,楼里的灯都像是寂寞的眼睛,眨巴眨巴的,没人搭理。比如八月份那会儿,售楼中心冷清得能听见针掉地上的声音,工作人员闲得跟啥似的,大眼…

【VUE】案例:商场会员管理系统

编写vuedfr实现对会员进行基本增删改查 1. drf项目初始化 请求: POST http://127/0.0.0.1:8000/api/auth/ {"username":"cqn", "password":"123"}返回: {"username":"cqn", "token&q…

Ubuntu2404安装

Ubuntu是一款非常优秀的发行版本,起初她的优势主要在于桌面版,但是随着Centos 从服务版的支持的退出,Ubuntu server也在迅猛的成长,并且不断收获了用户,拥有了一大批忠实的粉丝。好了,废话不多说&#xff0…

鸿蒙harmonyos next flutter通信之BasicMessageChannel获取app版本号

本文将通过BasicMessageChannel获取app版本号,以此来演练BasicMessageChannel用法。 建立channel flutter代码: //建立通道 BasicMessageChannel basicMessageChannel BasicMessageChannel("com.xmg.basicMessageChannel",StringCodec());…

微智启yolo数据集划分工具免费分享下载

微智启yolo数据集划分工具,是由微智启软件工作室开发,版权所有,用于划分yolo数据集的工具,免费分享不收费,禁止用于一切商业用途,如有发现欢迎举报投诉并退款! 使用指南: 打开软件&…

Linux忘记root用户密码怎么重设密码

直接说步骤: 1.重启客户机 2.在选择内核页面快速按e键,进入编辑模式 进入后应该是这个样子 在这里只能按上下键切换行 找到Linux16这里 3.按右方向键切换到行尾,也就是UTF-8处,在后面添加一个空格,然后加上这段话 …

Pikachu-暴力破解-验证码绕过(on client)

访问页面, 从burpsuite 上看到返回的源代码; 验证码生成时通过 createCode 方法生成,在前端页面生成; 同时也是在前端做的校验; 直接验证;F12 -- 网络,随便输入个账号、密码、验证码&#xff0…

【Web】portswigger 服务端原型污染 labs 全解

目录 服务端原型污染 为什么服务器端原型污染更难检测? 通过受污染的属性反射检测服务器端原型污染 lab1:通过服务器端原型污染进行权限提升 无需污染属性反射即可检测服务器端原型污染 状态代码覆盖 JSON 空格覆盖 字符集覆盖 lab2:检测没有污染属性反射的…

初识Linux · 进程替换

目录 前言: 1 直接看代码和现象 2 解释原理 3 将代码改成多进程版本 4 认识所有函数并使用 前言: 由前面的章节学习,我们已经了解了进程状态,进程终止以及进程等待,今天,我们学习进程替换。进程替换我…