定向爬虫--针对固定网站的网页进行爬虫
- 目标网站--http://www.zuihaodaxue.cn
具体网页:http://www.zuihaodaxue.cn/shengyuanzhiliangpaiming2017.html
内容:软科中国最好大学排名-生源质量排名2017 - 查看源代码检查格式
- 查看该网站的robots协议
在原网址的基础上添加:http://www.zuihaodaxue.cn/robots.txt
显示网页不存在:即不存在robots.txt协议 -
程序设计
- 设计代码如下:
import requests
from bs4 import BeautifulSoup # 引用bs4库中的BeautifulSoup类
import bs4
def getHTMLText(url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return ""
def fill_univlist(ulist, html):
soup = BeautifulSoup(html, 'html.parser')
for tr in soup.find("tbody").children:
if isinstance(tr, bs4.element.Tag):
# 检测出tbody儿子中的标签类,过滤掉非标签类
tds = tr.find('td')
# tds = tr('td')
ulist.append(
[tds.contents[0].string, tds.contents[1].string, tds.contents[2].string, tds.contents[3].string])
def print_univlist(ulist, num):
tplt = "{0:^10}\t{1:^10}\t{2:^10}\t{3:^10}"
print(tplt.format("排名", "学校名称", "所在地", "总分", chr(12288)))
for i in range(num):
u = ulist[i]
print(tplt.format(u[0], u[1], u[2], u[3]), chr(12288))
def main():
uinfo = []
url = "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2017.html"
html = getHTMLText(url)
fill_univlist(uinfo, html)
print_univlist(uinfo, 20)
main()
结果显示:
python中格式化输出太难看,需改进。
另所书写的代码需要时刻与网页内容保持更新,不然很难适用