我正在用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
关于您的grep | sed无法帮助,因为不知道预期的输出
这是演示为什么将URL传递给curl而不附加URI的示例
#!/bin/bash
# just for demo
> URI.txt
URI='?daypartId=1&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