bs4爬取的时候有两个标签相同_PYTHON爬取数据储存到excel
大家周末好呀,我是滑稽君。前兩天上網課時朋友發來消息說需要爬取一些數據,然后儲存到excel里。記得我公眾號里發過關于爬蟲的文章,所以找我幫個忙。于是滑稽君花時間研究了一下完成了這個任務。那本期滑稽君就與大家分享一下在爬取完數據之后,如何儲存在excel里面的問題。
先說一下我的大概思路。因為之前已經寫了一些爬蟲工具,我們稍加修改就可以直接使用。重點是數據如果儲存到excel里,并且實現自動換行。沒有人的數據是全部列在一行的。根據我大PYTHON“除了不會生孩子,其他的什么都會”定理。在查找資料時,我'順理成章'的找到了“xlwt”這樣一個python用來與excel玩耍的庫。那它都能干啥呢?它可以實現創建表單、寫入指定單元格、指定單元格樣式等人工實現的功能,一句話就是人使用excel實現的功能,這個擴展包都可以實現。我們以之前爬取中國大學排名的代碼為例子。
源代碼:
import requestsfrom bs4 import BeautifulSoupimport bs4import xlwtdef getHTMLText(url): #抓取網頁 try: r = requests.get(url, timeout = 30) #設置超時時間為30秒 r.raise_for_status() #異常情況 r.encoding = r.apparent_encoding #替換編碼 return r.text except: return ""def fillUnivList(ulist, html): #提取關鍵信息添加到列表(核心功能) soup = BeautifulSoup(html, "html.parser") for tr in soup.find('tbody').children: #tr的子標簽里可能含有字符串,影響我們抓取下一所大學的信息 if isinstance(tr, bs4.element.Tag): #我們過濾掉非標簽信息的其他信息 tds = tr('td') #將所有的td標簽存為新的tds列表 ulist.append([tds[0].string,tds[1].string,tds[2].string,tds[3].string]) #抓取標簽之間的內容,這一步我們可以控制想要抓取的信息#重點內容開始,寫入excel,及自動換行def printUnivList(ulist, num): workbook = xlwt.Workbook() #創建工作表 # 創建工作表worksheet,填入表名 worksheet = workbook.add_sheet('中國排名爬取')????h=0?#設置變量h來代替行數 #print("{:^10}\t\t{:^6}\t\t{:^10}\t\t{:^10}".format("排名","學校名稱","省份","總分")) for i in range (num): u = ulist[i] #print("{:^10}\t\t{:^6}\t\t{:^10}\t\t{:^10}".format(u[0], u[1], u[2], u[3]))????????#?在表中寫入相應的數據, worksheet.write(h, 0, u[0]) #排名 worksheet.write(h, 1, u[1]) #學校 worksheet.write(h, 2, u[2]) #所在地 worksheet.write(h, 3, u[3]) #綜合 h=h+1 # 保存表 workbook.save('hello2.xls') def main(): uinfo = [] url = 'http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html' html = getHTMLText(url) fillUnivList(uinfo, html) printUnivList(uinfo, 549)#想打印多少數據自己輸入num的值main()可以看到,31-32行代碼中我們把爬來的數據放入列表,然后打印出來。我們現在需要把列表里的值打印到excel單元格中 。?worksheet.write(0, 0, 'hello world')的功能就是在第一行第一列插入'hello world'。前兩個數字分別代表行和列。大家記住他這里是從0開始算的。我們期望打印出排名、學校、所在地、綜合評分這4個信息。也就是說我們在輸入4次之后需要換行來輸入下一所學校的基本信息。怎么解決呢?
我們定義一個變量h=0,讓它代表行,打印4條信息為一個循環,每循環一次我們讓h+1以此來實現我們自動換行的功能。到處我們需要的功能都實現了,運行可以看到當前目錄下出現了一個excel表格。打開可以看到里面就是我們想要的信息。我們總共爬取了500多條學校的信息。這要是一條條的人工輸入得到什么時候。還好我們有python,我們只需編寫好代碼,剩下的體力活都交給python就OK啦。
如果你的python環境里沒有這個第三方庫,你還需要做的一件事就是打開CMD,輸入'pip install xlwt'。
爬取中國大學排名
總結
以上是生活随笔為你收集整理的bs4爬取的时候有两个标签相同_PYTHON爬取数据储存到excel的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hamilton回路的判定与构造
- 下一篇: Foxmail邮箱最新应用指南 --如何