Chinês Simplificado | Inglês
Ferramenta de extração de links / coleta de trabalho de Xiaohongshu : extrair postagens de contas, coleções, curtidas e links de trabalho de álbuns; extrair links de trabalho de resultados de pesquisa e links de trabalho de usuários; extrair endereços de download de trabalho de Xiaohongshu;
Este projeto é totalmente gratuito e de código aberto, sem quaisquer funções pagas, por favor não se engane!
O plano de desenvolvimento e progresso do XHS-Downloader podem ser encontrados em Projetos
? Clique na imagem para assistir ao vídeo de demonstração
https://www.xiaohongshu.com/explore/作品ID?xsec_token=XXX
https://www.xiaohongshu.com/discovery/item/作品ID?xsec_token=XXX
https://xhslink.com/分享码
Suporta a inserção de vários links de trabalho ao mesmo tempo, usando espaços para separar links, o programa extrairá automaticamente links válidos sem processamento adicional!
Recomenda-se usar o Terminal do Windows (terminal padrão do Windows 11) para executar o programa e obter o melhor efeito de exibição!
Se você precisar apenas baixar os arquivos de trabalho sem marcas d'água, é recomendável escolher o programa em execução ou o Docker em execução ; se você tiver outras necessidades, é recomendável escolher o código-fonte em execução !
A partir da versão 2.2
, se não houver anormalidades na função do projeto, não há necessidade de processar cookies adicionalmente!
Usuários de Mac OS, Windows 10 e superior podem acessar Releases para baixar o pacote compactado do programa, descompactá-lo, abrir a pasta do programa e clicar duas vezes para executar main
para usá-lo.
Nota: O arquivo executável main
da plataforma Mac OS pode precisar ser iniciado a partir da linha de comando do terminal devido a limitações do dispositivo, o arquivo executável da plataforma Mac OS não foi testado e a disponibilidade não pode ser garantida!
Se você usar o programa desta forma, o caminho de download do arquivo padrão é: ._internalDownload
; o caminho do arquivo de configuração é: ._internalsettings.json
Dockerfile
para construir a imagemdocker pull joeanamier/xhs-downloader
para extrair a imagemdocker run -it joeanamier/xhs-downloader
docker run -it joeanamier/xhs-downloader python main.py server
docker start -i 容器名称/容器ID
docker restart -i 容器名称/容器ID
Docker não suporta o modo de chamada de linha de comando ao executar o projeto. As funções de leitura e monitoramento da área de transferência não podem ser usadas normalmente.
3.12
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
para instalar os módulos exigidos pelo programamain.py
para usarO projeto suporta o modo de operação de linha de comando. Se você deseja baixar algumas imagens de trabalhos gráficos, pode usar este modo para definir o número de série das imagens a serem baixadas!
Você pode usar a linha de comando para ler cookies do navegador e gravar no arquivo de configuração!
Exemplo de comando: python .main.py --browser_cookie Chrome --update_settings
Os parâmetros do tipo bool
suportam a configuração usando true
, false
, 1
, 0
, yes
, no
, on
ou off
(sem distinção entre maiúsculas e minúsculas).
Iniciar: Execute o comando: python .main.py server
Desligar: pressione Ctrl
+ C
para desligar o servidor
Interface de solicitação: /xhs/
Método de solicitação: POST
Formato de solicitação: JSON
Parâmetros de solicitação:
parâmetro | tipo | significado | valor padrão |
---|---|---|---|
url | str | Links para obras de Xiaohongshu são extraídos automaticamente e vários links não são suportados. | nenhum |
download | bool | Se deseja baixar o arquivo de trabalho; defini-lo como true levará mais tempo; | falso |
índice | lista[int] | O download do arquivo de imagem com o número de série especificado só é eficaz para trabalhos gráficos; não tem efeito quando o parâmetro download está definido como false | nulo |
pular | bool | Se ignorar trabalhos com registros de download, definir isso como true não retornará dados para trabalhos com registros de download; | falso |
Exemplo de código:
def api_demo(): servidor = "http://127.0.0.1:8000/xhs/" dados = { "url": "https://www.xiaohongshu.com/explore/123456789", "baixar": Verdadeiro, "índice": [ 3, 6, 9, ], } resposta = solicitações.post(servidor, json=dados) imprimir(response.json())
Se o seu navegador tiver a extensão Tampermonkey instalada, você poderá adicionar scripts de usuário e experimentar os recursos do projeto sem baixar e instalar!
Após a instalação bem-sucedida do script, abra a página Xiaohongshu, visualize as instruções do script e siga as instruções.
Dica: Use o script de usuário XHS-Downloader para extrair links de trabalho em lotes e use o programa XHS-Downloader para baixar arquivos de trabalho em lote sem marcas d'água!
Se você tiver outras necessidades, poderá chamar ou modificar o código de acordo com os prompts de comentários em main.py
!
exemplo de definição assíncrona(): """Definir parâmetros através de código, adequado para desenvolvimento secundário""" # Exemplo de link error_link = "https://github.com/JoeanAmier/XHS_Downloader" demo_link = "https://www.xiaohongshu.com/explore/xxxxxxxxxx" links_múltiplos = f"{demo_link} {demo_link} {demo_link}" # Objeto da instância work_path = "D:\" # O caminho raiz para salvar dados/arquivos de trabalho, valor padrão: caminho raiz do projeto folder_name = "Download" # O nome da pasta de armazenamento do arquivo de trabalho (criada automaticamente), valor padrão: Download name_format = "Título do Trabalho Descrição do Trabalho" user_agent = "" # Usuário-Agente cookie = "" # Cookie da versão web Xiaohongshu, sem necessidade de login, parâmetros opcionais, o status de login tem impacto na coleta de dados proxy = Nenhum # Tempo limite do proxy de rede = 5 # Limite de tempo limite de dados da solicitação, unidade: segundos, valor padrão: 10 chunk = 1024 * 1024 * 10 # Ao baixar um arquivo, o tamanho do bloco de dados obtido do servidor a cada vez, unidade: bytes max_retry = 2 # Quando a solicitação de dados falha, o número máximo de novas tentativas, unidade: segundos, valor padrão : 5 record_data = False # Se deseja salvar os dados de trabalho no arquivo image_format = "WEBP" # Formato de download de arquivo de trabalho gráfico e de texto, suporta: PNG, WEBP folder_mode = False # Se deseja armazenar os arquivos de cada trabalho em uma pasta separada # assíncrono com XHS() como xhs: # pass # Usa parâmetros padrão assíncronos com XHS( caminho_de_trabalho=caminho_de_trabalho, nome_pasta=nome_pasta, nome_formato=nome_formato, user_agent=user_agent, biscoito = biscoito, proxy=proxy, tempo limite = tempo limite, pedaço = pedaço, max_retry=max_retry, dados_registro=dados_registro, formato_imagem=formato_imagem, modo_pasta=modo_pasta, ) como xhs: # Use parâmetros personalizados download = True # Se deseja baixar o arquivo de trabalho, valor padrão: False # Retorna informações detalhadas sobre o trabalho, incluindo endereço de download # Retorna um dicionário vazio quando a obtenção de dados falha print(await xhs.extract(error_link, download, )) imprimir(aguarde xhs.extract(demo_link, download, index=[1, 2])) # Suporte à passagem de vários links de trabalho print(await xhs.extract(multiple_links, download, ))
O projeto usa pyperclip
para implementar a função de leitura da área de transferência. Este módulo varia em diferentes sistemas.
No Windows, nenhum módulo adicional é necessário.
No Mac, este módulo utiliza os comandos pbcopy e pbpaste, que devem ser fornecidos com o sistema operacional.
No Linux, este módulo utiliza os comandos xclip ou xsel, que devem ser fornecidos com o sistema operacional. Caso contrário, execute "sudo apt-get install xclip" ou "sudo apt-get install xsel" (nota: xsel nem sempre parece funcionar)
Em outros sistemas Linux, você precisa instalar o módulo qtpy ou PyQT5.
O arquivo settings.json
no diretório raiz do projeto é gerado automaticamente na primeira execução e alguns parâmetros de execução podem ser personalizados.
Se um valor de parâmetro inválido for definido, o programa usará o valor padrão do parâmetro!
parâmetro | tipo | significado | valor padrão |
---|---|---|---|
caminho_de_trabalho | str | Caminho raiz para salvar dados/arquivos de trabalho | Caminho raiz do projeto |
nome_da_pasta | str | O nome da pasta onde os arquivos de trabalho estão armazenados | Download |
nome_formato | str | Formato do nome do arquivo de trabalho, use espaços para separar os campos. Campos suportados:收藏数量 ,评论数量 ,分享数量 点赞数量 ,作品标签 ,作品ID ,作品标题 ,作品描述 ,作品类型 ,发布时间 ,最后更新时间 ,作者昵称 ,作者ID | 发布时间作者昵称作品标题 |
agente_usuário | str | NavegadorUserAgent | Agente de usuário integrado do Chrome |
biscoitos | str | Cookie da versão web Xiaohongshu, sem necessidade de login, sem parâmetros obrigatórios! | nenhum |
procurador | str | Proxy do programa de configuração | nulo |
tempo esgotado | interno | Limite de tempo limite de dados da solicitação, unidade: segundos | 10 |
pedaço | interno | Ao baixar um arquivo, o tamanho do bloco de dados obtido do servidor a cada vez, unidade: bytes | 2097152(2MB) |
max_retry | interno | Quando a solicitação de dados falha, o número máximo de novas tentativas, unidade: segundos | 5 |
dados_registro | bool | Se deseja salvar os dados de trabalho em um arquivo, salvando o formato: SQLite | falso |
formato_imagem | str | Formato de download de arquivo de trabalho gráfico e de texto, suporta: PNG , WEBP Este parâmetro afeta a interface usada ao baixar imagens e não é um formato de imagem fixo! | png |
download_de_imagem | bool | Chave de download de arquivo de trabalho gráfico | verdadeiro |
download_de vídeo | bool | Chave de download de arquivo de trabalho de vídeo | verdadeiro |
download_ao vivo | bool | Chave de download de arquivos gráficos, de texto e de animação | falso |
modo_pasta | bool | Se os arquivos de cada obra devem ser armazenados em uma pasta separada, o nome da pasta deve ser consistente com o nome do arquivo; | falso |
download_record | bool | Se deseja registrar o ID das obras baixadas com sucesso. Se ativado, o programa irá pular automaticamente o download das obras com os registros existentes. | verdadeiro |
linguagem | str | Defina o idioma do programa atualmente suportado: zh_CN , en_GB | zh_CN |
Outras instruções: Exemplo de obtenção do parâmetro user_agent
é altamente recomendável configurá-lo de acordo com as informações reais do navegador!
A partir da versão 2.2
, se não houver anormalidades na função do projeto, não há necessidade de processar cookies adicionalmente!
https://www.xiaohongshu.com/explore
F12
para abrir as ferramentas do desenvolvedor网络
保留日志
cookie-name:web_session
na caixa de entrada过滤
Fetch/XHR
网络
(se não houver nenhum pacote, repita a etapa 7)O XHS-Downloader armazenará o ID do trabalho baixado no banco de dados. Ao baixar o mesmo trabalho repetidamente, o XHS-Downloader irá automaticamente ignorar o download do arquivo do trabalho (mesmo que o arquivo de trabalho não exista). - baixe o arquivo de trabalho, primeiro exclua o ID de trabalho correspondente no banco de dados e, em seguida, use o XHS-Downloader para baixar o arquivo de trabalho!
Esta função está habilitada por padrão. Se estiver desabilitada, o XHS-Downloader irá verificar se o arquivo existe e pulará o download se o arquivo existir!
Se o XHS-Downloader for útil para você, considere dar uma estrela . Obrigado pelo seu apoio!
Alipay | |
---|---|
Se desejar, considere financiar suporte adicional para o XHS-Downloader !
Observação: o bate-papo em grupo QQ está limitado a discutir questões de uso do projeto. É estritamente proibido publicar qualquer anúncio e é estritamente proibido discutir quaisquer transações de conta, tráfego de conta, monetização de tráfego, indústrias cinzentas e outros conteúdos relacionados!
Os outros projetos de código aberto do autor:
A JetBrains apoia projetos ativos reconhecidos pela comunidade global de código aberto e fornece licenças gratuitas para desenvolvimento não comercial.