Давайте разделим эту проблему на части.
Сначала мы хотим получить один URL и вернуть соответствующий документ HTML. Делая это отдельно, мы также можем прозрачно обрабатывать ошибки и таймауты.
def get_raw_content(url):
tmp = requests.get(r.url, timeout=10)
return tmp.content if tmp.status_code == 200 else None
Далее следует интересный момент. Учитывая один HTML документ, мы теперь хотим извлечь контент для определенного div. Вот где должен быть ваш оригинальный код.
Вы также можете использовать XPATH для этого. Но BeautifulSoup не поддерживает XPATH. Я написал модуль, который предоставляет простой интерпретатор XPATH для bs4. Если вам это нужно, просто дайте мне знать в комментариях.
def get_div_content(url):
# first fetch the content for this URL
html_text = get_raw_content(url)
if html_text is None:
return None
# work with beautiful soup to fetch the content you need
# TODO : insert your code for 1 URL here
return None
Теперь, как указано в других комментариях, мы просто перебираем все имеющиеся у нас URL-адреса и выполняем код для одного URL-адреса на каждом из них. в свою очередь.
def fetch_all(urls):
for url in urls:
txt = get_div_content(url)
print('{} {}'.format(url, txt))
Наконец, нам нужна точка входа для сценария python. Итак, я предоставил этот основной метод.
if __name__ == '__main__':
fetch_all(['http://www.google.com', 'http://www.bing.com'])