概括
我正在从事我的供应链管理学院项目,并希望分析网站上的每日帖子,以分析和记录行业对服务/产品的需求。每天都在更改的特定页面,并且具有不同数量的容器和页面:
免费
代码通过抓取 HTML 标签和记录数据点来生成 csv 文件(不要介意标题)。尝试使用“for”循环,但代码仍然只扫描第一页。
Python 知识级别:初学者,通过 youtube 和谷歌搜索学习“艰难的方式”。找到了适合我理解水平的示例,但在结合人们的不同解决方案时遇到了麻烦。
此刻的代码
从 urllib.request 导入 bs4 将 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()
如果您想进一步了解,请告诉我。Rest 正在定义在 HTML 代码中找到并打印到 csv 的数据容器。任何帮助/建议将不胜感激。谢谢!
实际结果 :
代码仅为第一页生成 CSV 文件。
代码至少不会写在已扫描的内容之上(每天)
预期成绩 :
代码扫描下一页并识别何时没有要浏览的页面。
CSV 文件每页会生成 10 个 csv 行。(无论最后一页上的数量是多少,因为数字并不总是 10)。
代码将写在已经抓取的内容之上(使用带有历史数据的 Excel 工具进行更高级的分析)