컬 명령의 URL을 반복하는 방법은 무엇입니까?

컬 명령의 URL을 반복하는 방법은 무엇입니까?

저는 웹 스크래핑(및 일반 프로그래밍)이 처음이고 필요한 정보를 얻기 위해 Python 및 Bash 스크립트를 사용하고 있습니다. 저는 WSL(Linux용 Windows 하위 시스템)을 사용하여 실행 중이고 어떤 이유로 스크립트가 git-bash를 사용하여 실행되고 있습니다.
웹 페이지의 Html을 다운로드한 다음 다른 웹 페이지에 대한 링크가 포함된 2개의 txt 파일을 반환하는 Python 스크립트로 보내는 bash 스크립트를 만들려고 합니다. 그런 다음 원본 스크립트는 txt 파일의 링크 중 하나를 반복하여 각 웹 페이지의 html 콘텐츠를 링크의 특정 부분 이름을 딴 파일로 다운로드합니다. 그러나 마지막 루프는 작동하지 않습니다.
컬 명령에 대한 링크를 수동으로 작성하면 작동합니다. 하지만 스크립트를 실행하려고 하면 작동하지 않습니다.
Bash 스크립트는 다음과 같습니다.

#!/bin/bash

curl http://mythicspoiler.com/sets.html |
cat >>mainpage.txt
python creatingAListOfAllExpansions.py #returns two txt files containing the expansion links and the commander decks' links
rm mainpage.txt

#get the pages from the links
cat commanderDeckLinks.txt |
while read a ; do
    curl $a |          ##THIS DOESN'T WORK
    cat >>$(echo $a | cut --delimiter="/" -f4).txt
done

나는 몇 가지 다른 접근 방식을 시도하고 비슷한 문제를 보았지만 평생 동안 이 문제를 해결할 수 없습니다. 항상 같은 오류가 나타납니다.

curl: (3) URL using bad/illegal format or missing URL

CommanderDeckLinks.txt의 내용은 다음과 같습니다.

http://mythicspoiler.com/cmd/index.html
http://mythicspoiler.com/c13/index.html
http://mythicspoiler.com/c14/index.html
http://mythicspoiler.com/c15/index.html
http://mythicspoiler.com/c16/index.html
http://mythicspoiler.com/c17/index.html
http://mythicspoiler.com/c18/index.html
http://mythicspoiler.com/c19/index.html
http://mythicspoiler.com/c20/index.html

이것은 Python 스크립트입니다.

#reads the main page of the website
with open("mainpage.txt") as datafile:
    data = datafile.read()

#gets the content after the first appearance of the introduced string
def getContent(data, x):
    j=0
    content=[]
    for i in range(len(data)):
        if(data[i].strip().startswith(x) and j == 0):
            j=i
        if(i>j and j != 0):
            content.append(data[i])
    return content

#gets the content of the website that is inside the body tag
mainNav = getContent(data.splitlines(), "<!--MAIN NAVIGATION-->")

#gets the content of the website that is inside of the outside center tags
content = getContent(mainNav, "<!--CONTENT-->")

#removes extra content from list
def restrictNoise(data, string):
    content=[]
    for i in data:
        if(i.startswith(string)):
            break
        content.append(i)
    return content

#return only lines which are links
def onlyLinks(data):
    content=[]
    for i in data:
        if(i.startswith("<a")):
            content.append(i)
    return content


#creates a list of the ending of the links to later fetch
def links(data):
    link=[]
    for i in data:
        link.append(i.split('"')[1])
    return link

#adds the rest of the link
def completLinks(data):
    completeLinks=[]
    for i in data:
        completeLinks.append("http://mythicspoiler.com/"+i)
    return completeLinks

#getting the commander decks
commanderDecksAndNoise = getContent(content,"<!---->")
commanderDeck = restrictNoise(commanderDecksAndNoise, "<!---->")
commanderDeckLinks = onlyLinks(commanderDeck)
commanderDecksCleanedLinks = links(commanderDeckLinks)

#creates a txt file and writes in it
def writeInTxt(nameOfFile, restrictions, usedList):
    file = open(nameOfFile,restrictions)
    for i in usedList:
        file.write(i+"\n")
    file.close()

#creating the commander deck text file
writeInTxt("commanderDeckLinks.txt", "w+", completLinks(commanderDecksCleanedLinks))

#getting the expansions
expansionsWithNoise = getContent(commanderDecksAndNoise, "<!---->")
expansionsWithoutNoise = restrictNoise(expansionsWithNoise, "</table>")
expansionsLinksWNoise = onlyLinks(expansionsWithoutNoise)
expansionsCleanedLinks = links(expansionsLinksWNoise)

#creating the expansions text file
writeInTxt("expansionLinks.txt", "w+", completLinks(expansionsCleanedLinks))

내 문제를 해결하기 위해 추가 정보가 필요하면 알려주시기 바랍니다. 도움을 주신 모든 분들께 감사드립니다

답변1

여기서 문제는 bash(Linux)와 창의 줄 끝이 각각 LF와 CRLF로 다르다는 것입니다(이것이 모두 새로운 것이기 때문에 잘 모르겠습니다). 따라서 줄로 구분된 항목이 포함된 Python 파일을 만들면 생성된 파일에 CRLF 끝이 있고 bash 스크립트는 LF만 읽기 때문에 URL을 쓸모 없게 만들기 때문에 bash 스크립트는 파일을 잘 읽을 수 없습니다. 거기 없어. Bash 코드를 사용하여 이 문제를 해결하는 방법을 모르지만 내가 한 일은 밑줄 "_"로 구분된 각 항목이 있는 파일을 생성하고(파이썬을 사용하여) 마지막 항목 n을 추가하여 끝을 처리할 필요가 없도록 하는 것이었습니다. 라인의. 그런 다음 마지막 항목을 제외하고 밑줄로 구분된 각 항목을 반복하는 bash에서 for 루프를 실행했습니다. 이로써 문제가 해결되었습니다.

관련 정보