Учитывая несколько сотен упорядоченных по порядку html-файлов, каждый из которых имеет несколько тегов изображений, но только одно изображение с идентификатором, который я ищу и следую условию
<img title="$titleText" src="$imgURL" id="foo" border="0" />
где $imgURL
и $titleText
уникальны для каждой страницы и непредсказуемы, так как URL страницы (предсказуемо), а изображение, которое я хочу на каждой странице, имеет id="foo"
(то же самое на каждой странице, другие изображения имеют разные или без идентификатора).
Как бы я пошел извлекать $imgURL
и $titleText
в bash
?
Пока я смотрю на отправную точку
for count in `seq 1 400`;
do page="https://website/$count.html";
imgURL=[somehow get $imgURL from $page];
titleText=[somehow get $titleText from $page];
echo -e "$count\n$titleText\n$imgURL\n\n" >> some-file;
done
но без реальной идеи о том, как выполнить части в скобках.
Вероятно, потребуется задействовать как минимум два из sed
/grep
/curl
/wget
.
Изменить: 95% ответили JoW ниже, последние детали пары следуйте здесь
После того, как JoW указал мне правильное направление, я смог легко разобраться в остальном. Последний использованный скрипт, который имел тот же намеченный эффект, что и вышеперечисленный код "отправной точки", был:
#!/usr/bin/python
#
from bs4 import BeautifulSoup
import requests
for count in xrange(1, 400):
ct = str(count)
url = "website/" + ct + ".html"
data = requests.get("https://" +url)
soup = BeautifulSoup(data.text)
for link in soup.findAll("img", {"id": "foo"}):
with open('some-file', "a") as out:
out.write(ct + "\n" + link['title'] + "\n" + link['src'] + "\n\n")