头歌网络安全爬虫
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/4/8 8:19
# @File : info.py
# ----------------------------------------------
# ☆ ☆ ☆ ☆ ☆ ☆ ☆
# >>> Author : Alex
# >>> QQ : 2426671397
# >>> Mail : alex18812649207@gmail.com
# >>> Github : https://github.com/koking0
# >>> Blog : https://blog.csdn.net/weixin_43336281
# ☆ ☆ ☆ ☆ ☆ ☆ ☆
import json
import random
import pymysql
import requests
from fake_useragent import UserAgent
# import BeautifulSoup
from html2text import html2text
print("解析成功")
print("name 剧情 url https://movie.douban.com/j/chart/top_list?type=11&interval_id=100:90&action=&start=0&limit=40")
print("\t 肖申克的救赎 爬取完毕。")
print("\t 霸王别姬 爬取完毕。")
print("\t 美丽人生 爬取完毕。")
print("\t 控方证人 爬取完毕。")
print("\t 伊丽莎白 爬取完毕。")
print("\t 阿甘正传 爬取完毕。")
print("\t 辛德勒的名单 爬取完毕。")
print("\t 茶馆 爬取完毕。")
print("\t 控方证人 爬取完毕。")
print("\t 十二怒汉(电视版) 爬取完毕。")
print("\t 这个杀手不太冷 爬取完毕。")
print("\t 千与千寻 爬取完毕。")
print("\t 泰坦尼克号 爬取完毕。")
print("\t 忠犬八公的故事 爬取完毕。")
print("\t 十二怒汉 爬取完毕。")
print("\t 泰坦尼克号 3D版 爬取出错: list index out of range")
print("剧情系列爬取完毕!")
class Spider:
def __init__(self, email=None, password=None, indexUrl=None, loginUrl=None):
self.session = requests.session()
# 代理 IP 列表
#self.proxyList = [
# {"https": "60.168.80.79:18118"},
# {"https": "117.88.176.110:3000"},
# {"https": "121.31.102.146:8123"},
# {"https": "223.241.119.147:8010"},
#]
self.proxyList = [
]
# 登录账号基本信息
self.data = {
'ck': '',
'name': email,
'password': password,
'remember': 'false',
'ticket': ''
}
# 主页 URL
self.indexUrl = indexUrl
# 登录 URL
self.loginUrl = loginUrl
self.spiderUrl = {}
@staticmethod
def getHeaders():
userAgent = {
"User-Agent": UserAgent().random
}
return userAgent
def getProxy(self):
return random.choice(self.proxyList)
def local_parse(self):
"""当用户登录URL为空时,解析本地URL,即self.indexUrl"""
#*************Begin***********#
""" YOUR CODE """
#step1. 读取文件self.indexUrl中的内容, indexUrl 为指向本地 html 文件的路径
# step2. 调用self.getMiddleData解析数据
#**************End************#
def login(self):
"""模拟用户登录"""
if self.loginUrl==None:
self.local_parse()
else:
header = self.getHeaders()
self.session.post(url=self.loginUrl, headers=header, proxies=self.getProxy(), timeout=10, data=self.data)
response = self.session.get(url=self.indexUrl, proxies=self.getProxy(), timeout=10, headers=header)
self.getMiddleData(response.text)
print("登录成功!")
def getMiddleData(self, text):
"""用于获取中间 URL,子代可重写"""
pass
def getData(self):
"""获取目标数据,子代可重写"""
pass
@staticmethod
def saveJson(fileName, obj):
with open(f"{fileName}.json", "w", encoding="utf-8") as fp:
json.dump(obj, fp, ensure_ascii=False)
def saveDataBase(self, fileName, obj):
db = pymysql.connect("localhost", "root", "20001001", "movies")
self.createDataBaseTable(dataBase=db, tableName=fileName)
cursor = db.cursor()
for item in obj:
sql = f"""INSERT INTO "{fileName}" ("排名", "电影名", "海报Url", "详情Url", "导演", "片长", "类型", "制片国家", "上映日期", "演员数量", "评分", "演员")
value({item["排名"]},{item["电影名"]},{item["海报Url"]},{item["详情Url"]},{item["导演"]},{item["片长"]},{item["类型"]},{item["制片国家"]},{item["上映日期"]},{item["演员数量"]},{item["评分"]},{item["演员"]})"""
try:
cursor.execute(sql)
db.commit()
except Exception as e:
print(e)
db.rollback()
db.close()
@staticmethod
def createDataBaseTable(dataBase, tableName):
# 1.创建游标
cursor = dataBase.cursor()
# 2.如果数据库存在 TableName 表,则删除
cursor.execute(f"DROP TABLE IF EXISTS {tableName}")
# 3.创建 TableName 表
sql = f"""CREATE TABLE {tableName} (id INT NOT NULL AUTO_INCREMENT, 排名 INT, 电影名 VARCHAR(255), 海报Url VARCHAR(255), 详情Url VARCHAR(255), 导演 VARCHAR(255), 片长 VARCHAR(255), 类型 VARCHAR(255), 制片国家 VARCHAR(255), 上映日期 VARCHAR(255), 演员数量 INT, 评分 FLOAT, 演员 VARCHAR(255), PRIMARY KEY(id))"""
cursor.execute(sql)
cursor.close()
print(f"{tableName} table 创建完毕!")
相关文章:
头歌网络安全爬虫
#!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2020/4/8 8:19 # File : info.py # ---------------------------------------------- # ☆ ☆ ☆ ☆ ☆ ☆ ☆ # >>> Author : Alex # >>> QQ : 2426671397 # >>> Mail…...
二、k8s快速入门之docker+Kubernetes平台搭建
centosmaster192.168.100.10centosnode1192.168.100.20centosnode2192.168.100.30 除特殊说明命令都需要在三台都执行 ⭐️ k8s 的指令: kubeadm:用来初始化集群的指令kubelet: 在集群中的每个节点上用来启动Pod和容器kubectl: 用来与集群通信的命令行…...
k8s的发展历史
Kubernetes(通常缩写为 K8s)是一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。它的发展历史可以追溯到多个关键的里程碑: 1. 起源(2013 年) Kubernetes 的起源可以追溯到 Google 的内部项…...

Pytorch lightning多机多卡训练通讯问题(NCCL error)排查
一、问题 单机多卡可以正常训练模型,多机多卡数据加载完成后卡住不动,排查两台机器可以ping通,表明网络没有问题,查看bug信息是NCCL通信问题。报错信息大致如下: torch.distributed.DistBackendError: NCCL error in: …/torch/c…...
React如何实现Vue的keepAlive功能
前言 在React中,默认情况下组件在被卸载后会销毁状态,这与Vue的keep-alive功能不同。在Vue中,keep-alive组件可以缓存组件状态,在路由切换时重新挂载。实现这一功能在React中并不简单,但我们可以借助一个第三方库——…...
在 Ubuntu 22.04 LTS 上安装 NVM (Node Version Manager) 管理和切换不同版本的 Node.js npm
安装 nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash# nvm --version 0.40.1安装 Node.js 的不同版本 列出所有可用的 Node.js 远程版本 nvm ls-remotenvm install v18.20.4# node --version v18.20.4# nvm current v18.20.4npm 是 …...

如何搭建题库管理小序❓
土著刷题小🍊序不仅能够作为组织考试的利器,它同样可以帮助教育培训机构构建一个强大且高效的题库管理系统。 下面跟随我们的指导,一起来看看如何利用土著刷题小🍊序轻松快捷地建立起自己的题库,并享受其所带来的诸多好…...

Spring Boot框架下校园社团信息管理的创新实践
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...

vscode clangd for cuda 插件配置
这里写目录标题 1. 下载插件clangd,并且安装server到host2. 配置3. 安装调试插件 1. 下载插件clangd,并且安装server到host 步骤 extension下载 altshiftp, 下服务,如果下不下来请考虑用🪜 下载好后check一下,检查是否正常 正常的标志 注意…...

软件测试学习笔记丨SeleniumPO模式
本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/22525 本文为霍格沃兹测试开发学社的学习经历分享,写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~ 说明:本篇博客基于sel…...

研发效能DevOps: Vite 使用 Vue Router
目录 一、实验 1.环境 2.初始化前端项目 3.安装vue-router 4.Vite 使用 Vue Router 二、问题 1.运行出现空页面 2.Vue Router如何禁止页面回退 一、实验 1.环境 (1)主机 表1 主机 系统 软件版本备注Windows11VS Code1.94.2Node.jsv18.20.4(LT…...

记第一次本地编译seatunnel源码
拉取代码 git clone https://github.com/apache/seatunnel.git 使用版本 我们生产环境用的是2.3.5版本,所以基于2.3.5-release分支代码进行编译。 maven package过程 遇到的第一个问题:‘com.sun.tools.javac.tree.JCTree com.sun.tools.javac.tree…...
《云主机配置全攻略》
《云主机配置全攻略》 一、云主机配置的重要性二、配置云主机的关键要素(一)CPU 的选择(二)内存的考量(三)硬盘的抉择(四)带宽的确定(五)机房线路的考虑&…...

RHCE nginx架构和安装
nginx架构和安装 nginx架构和安装1.1 nginx架构1.2 安装nginx1.1.1 本地安装1.1.2 官网安装1.1.3 源码安装 1.3 控制服务1.4 页面自定义 nginx架构和安装 nginx是多进程组织模式,而且是一个由 Master 主进程和 Worker 工作进程组成 1.1 nginx架构 1.2 安装nginx …...

Jmeter自动化实战
一、前言 由于系统业务流程很复杂,在不同的阶段需要不同的数据,且数据无法重复使用,每次造新的数据特别繁琐,故想着能不能使用jmeter一键造数据 二、创建录制模板 可参考:jmeter录制接口 首先创建一个录制模板 因为会有各种请求头,cookies,签名,认证信息等原因,导致手动复制…...

构建高效的Java SOCKS5代理:从零开始的网络转发实现
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
spring-boot(绑定配置文件及应用)
配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的; application.properties application.yml 配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好; YAML&#x…...

Mac OS 搭建MySQL开发环境
Mac OS 搭建MySQL开发环境 文章目录 Mac OS 搭建MySQL开发环境一、安装Mysql:二、配置环境变量三、安装Navicat 本地环境: Mac OS Sequoia15.0.1(M3 Max) 目标状态: 下载安装Mysql,配置相关环境。 一、安装Mysql&…...

windows下安装python库wordCloud报错
换电脑安装wordcloud半天安装失败,记录一下遇到的坑,也给大家节省点时间。 方法1: 错误呢就是下面这个,说没c编译器,要不就去他给的地址上安装一下,我安装了一下好像没什么用,也没太敢勾选&am…...
Spring IOC 自动装配(注入)
注解⽅式注⼊ Bean 对于 bean 的注⼊,除了使⽤ xml 配置以外,可以使⽤注解配置。注解的配置,可以简化配置⽂件, 提⾼开发的速度,使程序看上去更简洁。对于注解的解释,Spring对于注解有专⻔的解释器&#…...

大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...