Python rastreia a lista de livros Douban e armazena a experiência do banco de dados

Recentemente, há poucos livros armazenados no banco de dados do projeto javaweb, então
decidi ir para a lista Douban para rastrear alguns dados

A primeira é rastrear a web para obter os dados e
armazená-los no tipo de dicionário primeiro

Colar código

def init (self, keyword):
self.keyword = keyword
self.url = “https://book.douban.com/tag/” + self.keyword
self.headers = { “User-Agent”: “Mozilla / 5.0 (Windows NT 10.0; WOW64) AppleWebKit / 537.36 (KHTML, como Gecko) Chrome / 70.0.3538.25 Safari / 537.36 Core / 1.70.3741.400 QQBrowser / 10.5.3863.400 ” }

def get_page (self, start):
params = { “start”: start * 20, “type”: “T” }


response = requests.get(self.url, params=params,
                        headers=self.headers).text
return response

def get_book (self, html):
doc = pq (html)
para itens em doc ("li.subject-item") .items ():
book = items.find (“h2”). text ()
mensagem = itens. find (“div.pub”). text ()
score = items.find (“span.rating_nums”). text ()
number = items.find (“span.pl”). text () [1: -1]
rendimento { “livro”: livro, “mensagem”: mensagem, “pontuação”: pontuação, “número”: número }




Tipo de dicionário de retorno

Quando
as informações da mensagem no dict são retiradas de uma maneira confusa, mas regular
, a lista é obtida / dividindo e armazenando as strings divididas
. O subscrito pode ser passado através da travessia da lista
porque o comprimento da mensagem é curto, e o subscrito
pode ser obtido diretamente para obter o autor e o preço.

Até agora
, temos o preço de autor do título

Ainda há um pequeno problema aqui
. O preço rastreado está no formato xx yuan
e o banco de dados armazena o tipo int,
então você pode obter a string em formato digital puro pegando o primeiro item da lista de divisão ('yuan') e o resto será executado pelo cursor Ou seja, o mysql será convertido para int

A próxima ideia é salvar no banco de dados durante o rastreamento

Python é relativamente simples de conectar ao banco de dados

conn = pymysql.connect (
host = localhost ,
port = 10047,
user = 'root',
passwd = 'qaz1234567',
db = 'Store',
charset = 'utf8'
)

Depois de obter a conexão, você pode manipular a instrução sql por meio do cursor

Eu também encontrei vários problemas de inserção

Python também suporta pré-processamento mysql. A diferença de JDBC é que o
espaço reservado é% s.
Além disso, por motivos de banco de dados, há um ID que aumenta
automaticamente . JavaWeb é operado por objetos Bean.
Ao inserir o ID em python, o espaço reservado% s também é necessário. Basta preencher um 0. O
MySQL incrementará automaticamente o ID.
Além disso, o cursor precisa de detalhes para inserir dados.

Insira uma única linha de dados

def db_insert_data(self, sql, cur, *args):
    try:
        # print(args)
        result = cur.execute(sql, args)
        print('添加语句受影响的行数:  ' + '信息插入数据库成功 ', result)
    except Exception as e:
        print('db_insert_data error: ', e.args)

args são parâmetros variáveis

Basta colocar os caracteres de espaço reservado juntos

Resolvidos esses problemas e
descobri que a saída de impressão pode ser inserida,
mas o MySQL não tem efeito. Você
deve se lembrar
de
terminar o trabalho. Você precisa enviar o cursor para a transação cur.close ()

conn.commit ()

conn.close ()

Insira os dados após o programa terminar

Acho que você gosta

Origin blog.csdn.net/weixin_46999174/article/details/108754269
Recomendado
Clasificación