【发布时间】:2020-06-07 10:58:37
【问题描述】:
我想从 URL.txt 中获取 URL,然后将它们附加到另一个文件 menu.sh 中存在的基本 URL https://www.mcdelivery.com.pk/pk/browse/menu.html 的末尾
Url.text 文件包含
?daypartId=1&catId=1
?daypartId=1&catId=2
?daypartId=1&catId=11
?daypartId=1&catId=10
?daypartId=1&catId=6
?daypartId=1&catId=4
?daypartId=1&catId=14
?daypartId=1&catId=5
?daypartId=1&catId=3
?daypartId=1&catId=8
我想附加像https://www.mcdelivery.com.pk/pk/browse/menu.html?daypartId=1&catId=11这样的网址
来自 URL.txt 文件的基本 url + url
我想出了这段代码,但问题是我只从第一页获取价格,并且它不断重复同一页面的值,直到循环结束。
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
我得到的输出
Rs 398
Rs 487
Rs 841
Rs 752
Rs 398
Rs 398
Rs 487
Rs 841
Rs 752
....
我想从每个页面获取价格并将它们存储到 price.txt
【问题讨论】:
-
大概,你只需要引用网址即可。
-
你能告诉我怎么做吗?
-
引用 = 写
"$LINE"而不是$LINE,另见 stackoverflow.com/q/29378566/6770384。 ¶ 但是,我认为这不会导致您描述的问题 »I only get the price from the first page«。 -
我无法重现您的问题。首先,无论我选择哪个 catId,所有 URL 都会为我返回相同的页面。然后,对这些页面进行 grepping 总是会返回
McArabia with Drink之类的东西,但绝不会像Rs、398、487之类的东西。
标签: arrays bash web-scraping readfile web-scraping-language