Tabla de contenido
Archivo Python leer y escribir
La idea básica de la colección continua de puntos de interrupción de página de lista
Los pandas guardan el archivo csv de datos
Ideas de recopilación de puntos de interrupción de la página de detalles
Los pandas guardan el archivo csv de datos
Captura capturas de pantalla continuamente
1. Escena de combate real
Cómo python + pandas realiza la recopilación continua de puntos de interrupción de páginas web
2. Puntos de conocimiento
sintaxis basica de python
Archivo Python leer y escribir
procesamiento de datos pandas
captura continua web
3. Combate real de novatos
La idea básica de la colección continua de puntos de interrupción de página de lista
la idea basica
Cuando se recopila la página de la lista, los datos recopilados se guardan en un archivo y, cada vez que se recopilan, la página recopilada la última vez se confirma al leer el archivo.
Realización de la recopilación continua de puntos de interrupción en las páginas de lista de páginas web
def __init__(self):
# 初始化日志
self.init_log()
# 默认采集的上一页为第 1 页
start_page = self.PAGE_START
list_file_path = self.fileManger.get_data_file_path(self.list_data_file)
if os.path.isfile(list_file_path):
# 读取列表文件, 确定上一次采集的第几页, 以支持连续采集
self.logger.info("数据文件存在")
self.data_file_exist = True
# 计算从第几页开始采集
list_df = pd.read_csv(list_file_path, usecols=['第几页'], encoding=self.encoding)
max_page = pd.DataFrame(list_df[2:]).max()
start_page = int(max_page) + 1
print("采集页面范围: 第[%s]页至第[%s]页" % (start_page, start_page + self.PAGE_STEP - 1))
for page in range(start_page, start_page + self.PAGE_STEP):
# 初始化采集链接
url = self.target_url.replace("p1", "p" + str(page))
# 构造采集对象
url_item = UrlItem(url=url, page=page)
self.url_items.append(url_item)
Los pandas guardan el archivo csv de datos
def save_to_file(self, data, cols):
# 保存到文件
file_path = self.fileManger.get_data_file_path(self.list_data_file)
# 初始化数据
frame = pd.DataFrame(data)
if not self.data_file_exist:
# 第一次写入带上列表头,原文件清空
frame.columns = cols
frame.to_csv(file_path, encoding=self.encoding, index=None)
self.data_file_exist = True # 写入后更新数据文件状态
else:
# 后续不写如列表头,追加写入
frame.to_csv(file_path, mode="a", encoding=self.encoding, index=None, header=0)
self.logger.debug("文件保存完成")
Ideas de recopilación de puntos de interrupción de la página de detalles
la idea basica
Cuando se recopila la página de detalles, los datos recopilados se guardan en un archivo. Para evitar la recopilación repetida, cada vez que recopile, confirme si el enlace de recopilación está en el archivo de datos recopilados. Si es así, omita la recopilación y, si no lo es, ejecutar la colección
Realización de código para la recopilación continua de puntos de interrupción en la página de detalles de la página web
def __init__(self):
# 初始化日志
self.init_log()
# 从列表文件读取等待采集的链接
list_file_path = self.fileManger.get_data_file_path(self.list_data_file)
list_df = pd.read_csv(list_file_path, encoding=self.encoding)
self.url_items = list_df.values # 初始化待采集链接数组
detail_file_path = self.fileManger.get_data_file_path(self.detail_data_file)
if os.path.isfile(detail_file_path):
# 从详情文件读取已采集的信息
self.data_file_exist = True
detail_df = pd.read_csv(detail_file_path, encoding=self.encoding)
self.detail_df = detail_df
Los pandas guardan el archivo csv de datos
def save_to_detail_file(self, data, cols):
# 保存到详情文件
file_path = self.fileManger.get_data_file_path(self.detail_data_file)
# 初始化数据
frame = pd.DataFrame(data)
if not self.data_file_exist:
# 第一次写入带上列表头,原文件清空
frame.columns = cols
frame.to_csv(file_path, encoding=self.encoding, index=None)
self.data_file_exist = True # 写入后更新数据文件状态
else:
# 后续不写如列表头,追加写入
frame.to_csv(file_path, mode="a", encoding=self.encoding, index=None, header=0)
self.logger.debug("文件保存完成")
resultado de la operación
resultado de ejecución
Rango de páginas de colección: página [16] a página [20]
100%|██████████| 5/5 [00:14<00:00, 2,91 s/it]
pitón versión 3.10.4
Captura capturas de pantalla continuamente
enlace de recursos
Combate real de novatos, ¡sigue aprendiendo!