Резюме
Я работаю над проектом колледжа по управлению цепочками поставок и хочу анализировать ежедневные публикации на веб-сайте для анализа и документирования спроса в отрасли на услуги / продукты.Конкретная страница, которая меняется каждый день и содержит различное количество контейнеров и страниц:
https://buyandsell.gc.ca/procurement-data/search/site?f%5B0%5D=sm_facet_procurement_data%3Adata_data_tender_notice&f%5B1%5D=dds_facet_date_published%3Adds_facet_date_published_today
Bacground
Код генерирует CSV-файл (не обращая внимания на заголовки)очистка тегов HTML и документирование точек данных.Пробовал использовать цикл for, но код все еще сканирует только первую страницу.
Уровень знаний Python: начинающий, изучите «трудный путь» через youtube и googling.Нашел пример, который работал для моего уровня понимания, но у него были проблемы с объединением различных решений людей.
Код на данный момент
импорт bs4 из urllib.request импорт urlopen как uReq из bs4 импорт BeautifulSoup в виде супа
проблема начинается здесь
for page in range (1,3):my_url = 'https://buyandsell.gc.ca/procurement-data/search/site?f%5B0%5D=sm_facet_procurement_data%3Adata_data_tender_notice&f%5B1%5D=dds_facet_date_published%3Adds_facet_date_published_today'
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")
containers = page_soup.findAll("div",{"class":"rc"})
эта часть не записывается в дополнение к существующим позициям
filename = "BuyandSell.csv"
f = open(filename, "w")
headers = "Title, Publication Date, Closing Date, GSIN, Notice Type, Procurement Entity\n"
f.write(headers)
for container in containers:
Title = container.h2.text
publication_container = container.findAll("dd",{"class":"data publication-date"})
Publication_date = publication_container[0].text
closing_container = container.findAll("dd",{"class":"data date-closing"})
Closing_date = closing_container[0].text
gsin_container = container.findAll("li",{"class":"first"})
Gsin = gsin_container[0].text
notice_container = container.findAll("dd",{"class":"data php"})
Notice_type = notice_container[0].text
entity_container = container.findAll("dd",{"class":"data procurement-entity"})
Entity = entity_container[0].text
print("Title: " + Title)
print("Publication_date: " + Publication_date)
print("Closing_date: " + Closing_date)
print("Gsin: " + Gsin)
print("Notice: " + Notice_type)
print("Entity: " + Entity)
f.write(Title + "," +Publication_date + "," +Closing_date + "," +Gsin + "," +Notice_type + "," +Entity +"\n")
f.close()
Пожалуйста, дайте мне знать, если вы хотитесмотри дальше.Отдых - это определение контейнеров данных, которые обнаруживаются в HTML-коде и печатаются в csv. Любая помощь / совет будут высоко оценены.Спасибо!
Фактические результаты:
Код генерирует файл CSV только для первой страницы.
Код не записывает поверх того, что уже было отсканировано (изо дня в день), по крайней мере
Ожидаемые результаты:
Код сканирует следующие страницы и распознает, когда их нетстраниц для просмотра.
CSV-файл будет генерировать 10 строк CSV на страницу.(И сколько бы ни было на последней странице, так как число не всегда 10).
Код будет писать поверх того, что уже было очищено (для более сложной аналитики с использованием инструментов Excel с историческими данными)