

import requests
from bs4 import BeautifulSoup
import bs4
ulist=[]#定義一個空列表
#用request抓取網絡信息
def getHTMLText(url):
try:
headers = { 'User-Agent': '5498'}
r = requests.get(url, timeout=30, headers=headers)#輸入獲取的url信息,輸出是url的內容
r.raise_for_status() #用raise_for_status產生異常信息
r.encoding = r.apparent_encoding # 修改編碼
return r.text #將網頁的內容返回給程序的其他部分
except:
return '產生異常' #出現錯誤,則輸出產生異常
def fillList(ulist, html):
soup = BeautifulSoup(html, "html.parser")
for tr in soup.find('tbody').children: #for語句查找tbody標簽,並且將孩子children遍歷
#isinstance對函數進行判斷,檢測tr標簽的類型,如果tr不是bs4定義的Tag類型,
#將過濾掉(並且為了代碼可以運行需要引入一個新的類型bs4)
if isinstance(tr, bs4.element.Tag):
tds = tr('td') #將所有的td 標簽存為一個列表類型
ulist.append([tds[1].string, tds[2].string])
#將ulist信息打印出來
def printList(ulist, num):
print("{:^6}\t{:^4}".format(" 標題", " 點擊量"))#輸出標題,點擊量,控制距離
#下面實現對其他信息的打印
for i in range(num):
u = ulist[i]
print("{:^6}\t{:^10}".format(u[0], u[1]))
def main():
# 新聞信息放到列表中
uinfo = []
url = "https://tophub.today/n/KqndgxeLl9"
# 將url轉換成html
html = getHTMLText(url)
fillList(uinfo, html)
printList(uinfo, 10)
main()