将数据从一个文件传输到另一个文件(Bash)-Web Scraping

问题描述 投票:0回答:1

我正在用bash进行网页抓取。这些网址保存在文件URL.txt中。

?daypartId=1&catId=1 ?daypartId=1&catId=11 ?daypartId=1&catId=2

我想将这些URL传递到另一个文件(main.sh)中的数组,该文件将附加在基本URL https://www.mcdelivery.com.pk/pk/browse/menu.html**(append here)**中,我想将URL.txt文件中的所有URl附加在基本URL的末尾,一个。

我想出了从URL.text中提取URL的代码,但是无法将其一个接一个地附加到基本url。

#!/bin/bash
ARRAY=()
while read -r LINE
do
    ARRAY+=("$LINE")
done < URL.txt

for LINE in "${ARRAY[@]}"
do    
    echo $LINE
    curl https://www.mcdelivery.com.pk/pk/browse/menu.html$LINE | grep -o '<span class="starting-price">.*</span>' | sed 's/<[^>]\+>//g' >> price.txt 
done  

只需要循环帮助,这样我就可以在main.sh文件中基本URL的末尾在URL.txt文件中附加不同的URL

bash loops url web-scraping scripting
1个回答
0
投票

关于您的grep | sed无法帮助,因为不知道预期的输出

这是演示为什么将URL传递给curl而不附加URI的示例

#!/bin/bash

# just for demo
> URI.txt
URI='?daypartId=1&amp;catId='
URL=https://www.mcdelivery.com.pk/pk/browse/menu.html

# just for demo
for id in 1 11 2
  do
    echo -e "${URI}${id}" | tee -a URI.txt
    # reason why it fails
    echo -e "\n\n\n" >> URI.txt
done

ARRAY=()
while read -r LINE || [[ -n $LINE ]]
do
    ## how to prevent
    #[ "$LINE" ] && \
    ARRAY+=("$LINE")
done < URI.txt

for LINE in "${ARRAY[@]}"
  do
    # just for demo
    echo -e "LINE='$LINE'"
    # skipt empty lines
    [ "$LINE" ] && curl "${URL}${LINE}" | grep -o '<span class="starting-price">.*</span>' | sed 's/<[^>]\+>//g' >> price.txt 
done

exit 0
© www.soinside.com 2019 - 2024. All rights reserved.