Загрузка содержимого веб-страницы
Я хочу написать программу на python для загрузки содержимого веб-страницы, а затем загрузить содержимое веб-страниц, на которые ссылается первая страница.
Например, это главная веб-страница http://www.adobe.com/support/security/ и страницы, которые я хочу загрузить: http://www.adobe.com/support/security/bulletins/apsb13-23.html и http://www.adobe.com/support/security/bulletins/apsb13-22.html
Есть определенное условие, которое я хочу выполнить: он должен загружать только веб-страницы в бюллетенях, а не в рекомендациях ( http://www.adobe.com/support/security/advisories/apsa13-02.html).
#!/usr/bin/env python
import urllib
import re
import sys
page = urllib.urlopen("http://www.adobe.com/support/security/")
page = page.read()
fileHandle = open('content', 'w')
links = re.findall(r"<a.*?\s*href=\"(.*?)\".*?>(.*?)</a>", page)
for link in links:
sys.stdout = fileHandle
print ('%s' % (link[0]))
sys.stdout = sys.__stdout__
fileHandle.close()
os.system("grep -i '\/support\/security\/bulletins\/' content >> content1")
Я уже извлек ссылку на бюллетени в content1, но не знаю, как загрузить содержимое этих веб-страниц, предоставив content1 в качестве входных данных.
Файл content1 показан ниже:- /support/security/bulletins/apsb13-23.html /support/security/bulletins/apsb13-23.html /support/security/bulletins/apsb13-22.html /support/security/bulletins/apsb13-22.html /support/security/bulletins/apsb13-21.html /support/security/bulletins/apsb13-21.html /support/security/bulletins/apsb13-22.html /support/security/bulletins/apsb13-22.html /support/security/bulletins/apsb13-15.html /support/security/bulletins/apsb13-15.html /support/security/bulletins/apsb13-07.html
2 ответа
Если я понял ваш вопрос, следующий скрипт должен быть тем, что вы хотите:
#!/usr/bin/env python
import urllib
import re
import sys
import os
page = urllib.urlopen("http://www.adobe.com/support/security/")
page = page.read()
fileHandle = open('content', 'w')
links = re.findall(r"<a.*?\s*href=\"(.*?)\".*?>(.*?)</a>", page)
for link in links:
sys.stdout = fileHandle
print ('%s' % (link[0]))
sys.stdout = sys.__stdout__
fileHandle.close()
os.system("grep -i '\/support\/security\/bulletins\/' content 2>/dev/null | head -n 3 | uniq | sed -e 's/^/http:\/\/www.adobe.com/g' > content1")
os.system("wget -i content1")
Возможно, этот вопрос относится к stackoverflow!
Но в любом случае вы можете посмотреть в HTTrack, что он выполняет аналогичные операции и, кроме того, его с открытым исходным кодом