【问题标题】:Web Scraping with bash使用 bash 进行网页抓取
【发布时间】:2020-09-25 07:06:24
【问题描述】:

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

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

我想将这些 URL 传递给另一个文件中的数组,该文件将附加到基本 URL https://www.mcdelivery.com.pk/pk/browse/menu.html 我想将 URL.txt 文件中的所有 URl 一个一个地附加到 base url 的末尾。

【问题讨论】:

  • 向我们展示你到目前为止的尝试
  • 你可能想考虑使用 python 来解决这个问题
  • while IFS= read -r line ;do echo $line done mcdelivery.com.pk/pk/browse/menu.html${line} | grep -o '.*' | sed 's/]\+>//g' >> 123.txt
  • 我想要一个循环,可以逐个遍历url并通过curl获取数据。
  • 你不应该打开重复的问题stackoverflow.com/questions/62235280/…

标签: arrays bash url web-scraping scripting


【解决方案1】:

你需要一种阅读每一行的方法,

while IFS= read -r line ;do
        echo $line
done < "${file}"

然后在该文件读取循环中,您将需要执行操作以附加并使用您获得的 $line。

curl http://example.com${line}

【讨论】:

  • while IFS= read -r line ;do echo $line done mcdelivery.com.pk/pk/browse/menu.html${line} | grep -o '.*' | sed 's/]\+>//g' >> 123.txt
  • 我正在尝试这样做。我是 bash 的新手。你能帮我用数组循环遍历迭代,以便我们可以将它们附加到 url 前面。谢谢
  • 我正在尝试遍历 text1.txt 中的内容。
  • ARRAY=() while read -r LINE do ARRAY+=("$LINE") done &lt; URL.txt for LINE in "${ARRAY[@]}" do echo $LINE curl https://www.mcdelivery.com.pk/pk/browse/menu.html$LINE | grep -o '&lt;h5 class="product-title"&gt;.*&lt;/h5&gt;' | sed 's/&lt;[^&gt;]\+&gt;//g' &gt;&gt; price.txt done我想出了这段代码,但是输出会重复,就像它只给出主页的输出一样,你能发现错误吗?
  • 像这样尝试,然后将输出打印到屏幕上,看看发生了什么,我认为您的 sed 或 grep 可能有问题但尚未检查.. typeset url= "mcdelivery.com.pk/pk/browse/menu.html" while IFS= read -r line ;do curl "${url}${line}" | grep -o '
    .*
    ' | sed 's/]\+>//g' 完成
猜你喜欢
  • 2020-11-07
  • 2018-02-06
  • 2017-06-23
  • 2011-03-13
  • 2019-04-06
  • 2019-06-23
  • 2011-10-21
  • 2018-10-24
相关资源
最近更新 更多