У меня есть несколько сайтов, с которых я хочу получать информацию с BeautifulSoup. Список сайтов будет меняться со временем. Кроме того, некоторые сайты могут не иметь соответствующей информации в то время.
Я заполняю адреса соответствующих сайтов и оставляю другие пустыми.
site1 = "http://www.some-site.com"
site2 = "http://www.another-site.com"
site3 = ""
site4 = "http://www.still-another-site.com"
Я могу вручную получить «суп»с каждого URL с этим. У меня есть except
операторы для обработки пропущенных URL-адресов.
try:
source_site1 = requests.get(site1, headers=hdr).text
soup_site1 = BeautifulSoup(source_site1, "lxml")
try:
source_site2 = requests.get(site2, headers=hdr).text
soup_site2 = BeautifulSoup(source_site2, "lxml")
try:
source_site3 = requests.get(site3, headers=hdr).text
soup_site3 = BeautifulSoup(source_site3, "lxml")
try:
source_site4 = requests.get(site4, headers=hdr).text
soup_site4 = BeautifulSoup(source_site4, "lxml")
Есть ли способ сгруппировать URL-адреса и выполнить итерацию по всей группе, чтобы получить «суп» для каждого сайта без необходимости жесткого кодирования каждого из ниходин (как выше)?
Если нет, есть ли другой метод, который даст те же результаты (отдельная переменная "суп" для каждого сайта)?
Я пробовал это, но "для"петля тупит меня.
site_list_dict = {
site1: "http://www.some-site1.com",
site2:"http://www.some-site2.com"
site3:""
site4:"http://www.some-site4.com"
}
# (This will not work because it will be overwritten with each pass. I would need a unique name for
# each "soup" variable, preferably assocated with the site key.)
for key,value in site_list_dict():
try:
source = requests.get(value, headers=hdr).text
soup = BeautifulSoup(source, "lxml")