Almacenamiento de datos del rastreador de Python

Almacenamiento de datos del rastreador de Python

¿Cómo almacenar datos después del rastreo? Este artículo explicará las operaciones comunes para almacenar datos en Excel, TXT y bases de datos.

1. Salida de resultados

El resultado aquí se imprime directamente, ¿cómo conservar el almacenamiento?

for title,actor,time,score,count,comment in zip(titles,actors,times,scores,counts,comments):
    actor = actor.strip()
    time = time.strip().split()[0]
    print(title,actor,time,score,count,comment)

2. Almacenamiento de datos

modo descripción
w Abra un archivo solo para escritura. Si el archivo ya existe, abra el archivo y comience a editar desde el principio, es decir, se eliminará el contenido original. Si el archivo no existe, cree uno nuevo.
wb Abra un archivo en formato binario solo para escritura. Si el archivo ya existe, abra el archivo y comience a editar desde el principio, es decir, se eliminará el contenido original. Si el archivo no existe, cree uno nuevo.
w + Abra un archivo para leer y escribir. Si el archivo ya existe, abra el archivo y comience a editar desde el principio, es decir, se eliminará el contenido original. Si el archivo no existe, cree uno nuevo.
wb + Abra un archivo en formato binario para leer y escribir. Si el archivo ya existe, abra el archivo y comience a editar desde el principio, es decir, se eliminará el contenido original. Si el archivo no existe, cree uno nuevo.
un Abra un archivo para agregarlo. Si el archivo ya existe, el puntero del archivo se colocará al final del archivo. En otras palabras, el nuevo contenido se escribirá después del contenido existente. Si el archivo no existe, cree un nuevo archivo para escribir.
desde Abra un archivo en formato binario para agregarlo. Si el archivo ya existe, el puntero del archivo se colocará al final del archivo. En otras palabras, el nuevo contenido se escribirá después del contenido existente. Si el archivo no existe, cree un nuevo archivo para escribir.
a + Abra un archivo para leer y escribir. Si el archivo ya existe, el puntero del archivo se colocará al final del archivo. Cuando se abre el archivo, estará en modo anexar. Si el archivo no existe, cree un nuevo archivo para leer y escribir.
desde + Abra un archivo en formato binario para agregarlo. Si el archivo ya existe, el puntero del archivo se colocará al final del archivo. Si el archivo no existe, cree un nuevo archivo para leer y escribir.

2.1 Almacenar datos en txt

with open('text.txt','w') as f:
    # 写入单行
    f.write()
    # 写入多行
    f.writelines([])

2.2 Almacenar datos en csv

import csv
with open('bilibili.csv','w',encoding='utf-8',newline='') as f:
    # 创建一个写的对象
	writer = csv.writer(f)
    # 写入单行
 	writer.writerow([])
	# 写入多行
    writer.writerows([(),(),()])

2.3 Almacenamiento de datos en la base de datos

Para datos más complejos, podemos almacenarlos en la base de datos, tome mysql como ejemplo

pip instalar pymysql

2.3.1 Conexión a la base de datos

import pymysql
db = pymysql.connect('IP','username','passwd','DATABASE')

# 连接到Mysql
db = pymysql.connect('localhost','root','123456')

# 连接到Mysql指定数据库
db= pymysql.connect('localhost','root','123456','database')

2.3.2 Crear una base de datos, crear una tabla de datos

# 首先连接到数据库
db = pymysql.connect('localhost','root','123456')

# 建立游标
cursor = db.cursor()

# 创建数据库
cursor.execute("CREATE DATABASE doubanTop250")

# 创建数据表(在已有的数据库的前提下)
cursor.execute('''CREATE TABLE movie 
               (`id` INT AUTO_INCREMENT PRIMARY KEY,
                `title` VARCHAR(100) NOT NULL,
                `actor`VARCHAR(100) NOT NULL,
                `release_time` VARCHAR(100) NOT NULL,
                `score` VARCHAR(100) NOT NULL,
                `count` VARCHAR(100) NOT NULL,
                `comment` VARCHAR(100) NOT NULL)
               	 DEFAULT CHARSET=utf8;''')

2.3.3 Insertar datos

import pymysql
db = pymysql.connect('localhost','root','123456','database', charset='utf8')
cursor = db.cursor()
sql = '''insert into douban_movie4(title,actor,release_time,score,count,comment) values (%s,%s,%s,%s,%s,%s)'''
cursor.execute(sql,data)
    
# 提交
db.commit()

Tome la película Top250 Douban como ejemplo

import csv
import time
import pymysql
import requests
from lxml import etree

class MovieSpider(object):
    def __init__(self):
        self.headers = {
    
    
            'user-agent': 'Mozilla/5.0'
        }
        self.url = 'https://movie.douban.com/top250?start={}&filter='
        self.db = pymysql.connect('localhost','root','123456','doubanTop250')
        self.cursor = self.db.cursor()
        
        
    def get_html(self,url):
        resp = requests.get(url, headers=self.headers)
        html = resp.text
        self.parse_html(html)

    def parse_html(self,html):
        xp_html = etree.HTML(html)
        titles = xp_html.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[1]/a/span[1]/text()')
        scores = xp_html.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[2]/div/span[2]/text()')
        counts = xp_html.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[2]/div/span[4]/text()')
        comments = xp_html.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[2]/p[2]/span/text()')

        for title, score, count, comment, in zip(titles, scores, counts, comments):
            data = [title, score, count, comment]
            sql = '''insert into movie(title,score,count,comment) values (%s,%s,%s,%s)'''
            self.cursor.execute(sql,data)

                        
    def main(self):
        start_time = time.time()
        
        for i in range(0,250,25):
            url = self.url.format(i)
            self.get_html(url)
        
        self.db.commit()
        end_time = time.time()
        print('总耗时:',end_time-start_time)



if __name__ == '__main__':
    spider = MovieSpider()
    spider.main()

Lectura recomendada:

  1. Utilice xpath para rastrear datos
  2. uso del cuaderno jupyter
  3. BeautifulSoup rastrea las 250 mejores películas de Douban
  4. Un artículo te lleva a dominar el módulo de solicitudes.
  5. Conceptos básicos del rastreador web Python-BeautifulSoup

Este es el final, si te ayuda, bienvenido a gustar y seguir, tus me gusta son muy importantes para mí

Supongo que te gusta

Origin blog.csdn.net/qq_45176548/article/details/112222080
Recomendado
Clasificación