import requests
from bs4 import BeautifulSoup
import bs4
def getHTMLText(url):
try:
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36"}
r = requests.get(url, timeout=30, headers=headers)
r.raise_for_status() # 产生异常信息
r.encoding = r.apparent_encoding # 修改编码
return r.text # 返回网页信息
except:
return ""
# 提取html信息中关键的数据,并提取到列表中
def fillList(ulist, html):
soup = BeautifulSoup(html, "html.parser")
# 所有新闻信息被封装在表格中,这个表格标签叫tbody
# 在tbody中,每个新闻信息又被封装在tr中,每个tr标签,包含所有当前新闻的所有信息
# 每个tr中信息,又被td所包围
# 1. 遍历tbody,tr即每个新闻的信息
for tr in soup.find(‘tbody‘).children:
# 过滤非标签类型的其他数据
if isinstance(tr, bs4.element.Tag):
tds = tr(‘td‘) # 查询tr中的 td
ulist.append([tds[1].string, tds[2].string])
def printList(ulist, num):
print("{:^6}\t{:^10}".format("标题", "热度"))
for i in range(num):
u = ulist[i]
print("{:^6}\t{:^10}".format(u[0], u[1]))
def main():
# 新闻信息放到列表中
uinfo = []
# 百度新闻的url
url = "https://tophub.today/n/Jb0vmloB1G"
# 将url转换成html
html = getHTMLText(url)
fillList(uinfo, html)
printList(uinfo, 10) # 10 news
if __name__ == ‘__main__‘:
main()
标题 热度
武磊被曝感染新冠 301.0万
斗鱼Q4营收20.6亿 253.5万
意大利新增5986例 207.4万
海南4月7日开学 205.0万
奥运火炬传交日本 186.9万
京津冀多地火灾 169.3万
北京今起预约祭扫 165.7万
纽约疫情重大灾区 160.1万
杜特尔特自我隔离 157.1万
韩国罕见新冠病例 153.2万
原文:https://www.cnblogs.com/zwp13305086474/p/12541611.html