Python 网络爬虫笔记5 – Beautiful Soup库实战
Python 网络爬虫系列笔记是笔者在学习嵩天老师的《Python网络爬虫与信息提取》课程及笔者实践网络爬虫的笔记。
课程链接:Python网络爬虫与信息提取
参考文档:
Requests 官方文档(英文)
Requests 官方文档(中文)
Beautiful Soup 官方文档
re 官方文档
Scrapy 官方文档(英文)
Scrapy 官方文档(中文)
中国大学排名定向爬虫
软科中国大学排名:/zuihaodaxuepaiming.htmlimport requestsfrom bs4 import BeautifulSoupimport bs4def get_html_text(url):"""从网络上获取大学排名网页内容"""try:r = requests.get(url, timeout=30)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:return ""def fill_univ_list(univ_list, html):"""提取网页内容中的信息(大学排名表)到合适的数据结构"""soup = BeautifulSoup(html, "html.parser")# 分析网页源代码,确定检索的内容for tr in soup.find('tbody').children:if isinstance(tr, bs4.element.Tag):tds = tr('td')univ_list.append([tds[0].string, tds[1].string, tds[3].string])def print_univ_list(univ_list, num):"""输出结果,即大学排名表"""# 格式化输出,使用中文字符填充空白实现居中对齐template = "{0:^10}\t{1:{3}^10}\t{2:^10}"print(template.format("排名", "学校名称", "总分", chr(12288)))for i in range(num):u = univ_list[i]print(template.format(u[0], u[1], u[2], chr(12288)))def main():"""输入大学排名的 url,得到排名表"""univ_info = []url = '/zuihaodaxuepaiming.html'html = get_html_text(url)fill_univ_list(univ_info, html)print_univ_list(univ_info, 20) # 20 univsif __name__ == '__main__':print('running crawl_ranking')main()