URL 텍스트 파일 목록의 루프에서 Curl이 작동하지 않습니다.

URL 텍스트 파일 목록의 루프에서 Curl이 작동하지 않습니다.

약 50개의 URL이 포함된 텍스트 파일이 있고 텍스트 파일의 각 URL을 컬링하고 grep을 사용하여 GREP 일치 항목에서 몇 줄을 출력하려고 합니다.

각 줄을 에코하면 URL이 올바르게 표시되는 것처럼 왜 작동하지 않는지 이해할 수 없습니다. URL과 Grep을 사용하여 CURL을 수동으로 실행하면 작동합니다. 그러나 루프 내부에 들어가면 아무 것도 출력되지 않습니다.

while IFS= read -r line
do
echo "$line"
curl -s "$line" | grep "Telephone"
done <  links.txt

입력 예:

https://qguild.co.uk/our-butchers/simpsons-butchers-south-hykeham/
https://qguild.co.uk/our-butchers/simpsons-butchers-spalding/
https://qguild.co.uk/our-butchers/simpsons-butchers-lincoln/
https://qguild.co.uk/our-butchers/simpsons-butchers-2/

예제 출력:

curl -s "https://qguild.co.uk/our-butchers/simpsons-butchers-south-hykeham/" | grep "Telephone"

<p>Simpsons Butchers,<br />Pennell`s Garden Centre,<br />Newark Road, South Hykeham, Lincoln, LN6 9NT. Telephone: 01522 695419<br />Monday - Saturday : 8am - 5.30pm Sunday : 10am - 4pm</p>

<p>Pennells Garden Centre, Newark Road, SOUTH HYKEHAM, LINCOLN LN6 9NT</p>                        
<p>Telephone: <a href="tel:01522-695419">01522 695419</a></p>                        <p>Email: <a href="mailto:[email protected]">[email protected]</a></p>                        
<p>Website: <a href="http://gsimpsonbutchers.co.uk/" target="_blank" rel="noopener noreferrer">http://gsimpsonbutchers.co.uk/</a></p>

답변1

사용그리고:

대부분의 코드를 유지하려면 다음을 수행하십시오.

dos2unix links.txt

그 다음에

while IFS= read -r url; do
     xidel -e '//p[contains(., "Telephone")]/a/text()' -s "$url"
done < links.txt

더 짧게:

xargs < links.txt xidel -e '//p[contains(., "Telephone")]/a/text()' -s

산출

01522 695419
01775 723157
01522 525374
01529 460403

답변2

파일은 links.txtDOS 또는 Windows 텍스트 파일일 수 있습니다.

따라서 각 줄 끝에 추가 캐리지 리턴이 있어 URL 문자열 끝을 방해합니다.

예를 들어 를 사용하여 URL 목록을 Unix 텍스트 형식으로 변환한 dos2unix후 다시 시도하십시오.

답변3

여기에서 입력 리디렉션과 루핑을 사용하면 while상황이 지나치게 복잡해질 수 있습니다. 이 경우 catand 루프를 사용하는 것이 for더 간단합니다 .

IFS=$(printf "\n")
for line in $(cat links.txt)
do
    echo "$line"
    curl -s "$line" | grep "Telephone"
done

관련 정보