web-dev-qa-db-ja.com

HTMLページからリンクを取得する

いくつかのhtmlファイルリンクを含むtxtファイルがあります。このtxtの各リンクにアクセスし、その中にあるリンクを取得して、別のtxtファイルに保存する必要があります。

Linuxターミナル/シェルスクリプト/ Pythonでこれを行うにはどうすればよいですか?

1
Rafael

lynxをインストールしてから、次の手順を実行します。

lynx -listonly -nonumbers -dump input.html > links.txt

入力ファイルの拡張子が.htmlであることを確認してください。

例えば:

$ cat test.html
<a href="http://superuser.com">test</a>
http://google.com
$ lynx -listonly -nonumbers -dump test.html
http://superuser.com/

代わりに、リンクを取得する必要のあるHTMLファイルを指すテキストファイルがある場合は、それを繰り返すことができます。

while read -r file; do
  lynx -listonly -nonumbers -dump "$file" > "${file%.*}.txt
done < input.txt

これにより、テキストファイルのすべての行が読み取られ、lynxを使用してリンクが抽出され、それらが指すHTMLファイルと同じベース名で.txtファイルに書き込まれます。

3
slhck

質問を2つの部分に切ります。

1.テキストファイルからすべてのページを取得します。

ターゲットページにログインや資格情報は必要ないと仮定します。

LinuxまたはUnixマシンで実行するか、Windowsでは Cygwin ターミナルセッションで実行します

wget -i your.txt

2. ファイルからリンクを抽出

次に、ダウンロードしたファイルごとに、

cat FILE | \
sed 's/href=/\nhref=/g' | \
grep href=\" | \
sed 's/.*href="//g;s/".*//g' >> out.txt

何かが足りない場合は、実行します

Sudo apt-get install coreutils wget grep sed

ほとんどのシステムにはデフォルトで付属しているにもかかわらず、DebianLinuxでは。

Cygwinセッションでこれを行うことを選択した場合は、インストール時にCore UtilitiesWgetgrep、およびsedを選択することを忘れないでください。

2
iBug