鱼C论坛

 找回密码
 立即注册
查看: 1154|回复: 6

[已解决]爬虫问题?

[复制链接]
发表于 2020-2-23 16:02:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import requests
from bs4 import BeautifulSoup
import bs4

def getHtml(url):
    try:
        headers = {'User-Agent':'Mozilla/5.0'}
        r = requests.get(url,headers=headers)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        print('爬取失败')

def fillUnivlist(html,ulist):
    soup = BeautifulSoup(html,'html.parser')#注意是'parser'
    for tr in soup.find('tbody').children:#遍历每个孩子
        if isinstance(tr,bs4.element.Tag):#从孩子中挑选出所有标签
            tds = tr('td')
            ulist.append([tds[0].string,tds[1].string,tds[3].string])#只需要tds列表中的部分内容的字符串,注意append只能搬进去一个元素,要想搬进去多个数据要先打包成列表,再用append
                                                                     #如果用extent()就起不到打包嵌套列表的效果了
def printUnivlist(ulist,num):#列表定义为全局变量(在主函数中)全都能用
    tplt = '{0:^10}\t{1:{3}^6}\t{:^10}'#{3}表示当宽度不够时用format()的第三个参数填充(chr(12288))
    print(tplt.format('排名','学校名称','总分',chr(12288))#注明当宽度不够时用中文空格去填充,保证对齐
    for i in ulist[:num]:
        print(tplt.format(i[0],i[1],i[2],chr(12288))#'\t'表示横向制表,'^'表示居中,数字表示占位长度,':'后面为空表示用空格填充

def main():#中间的名字较长要占位多一点
    ulist = []
    url = 'http://www.zuihaodaxue.com/Greater_China_Ranking2019_0.html'
    html = getHtml(url)
    fillUnivlist(html,ulist)
    printUnivlist(ulist,100)

main()




  File "<ipython-input-158-1764a056b3b5>", line 25
    for i in ulist[:num]:
                        ^
SyntaxError: invalid syntax

这是为什么?
最佳答案
2020-2-23 22:04:01
本帖最后由 yjsx86 于 2020-2-23 22:06 编辑


for i in ulist[:num]: 的上面和下面的print缺 )

我尝试运行下你的代码 发现tplt = '{0:^10}\t{1:{3}^6}\t{:^10}这里前两个给了位置参数, 第三个没写, 这里也会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-23 16:05:09 From FishC Mobile | 显示全部楼层
注释也太多了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-23 17:50:47 | 显示全部楼层

注释还有要求?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-23 17:55:43 | 显示全部楼层

不是,我都删了还是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-23 19:31:40 | 显示全部楼层
ulist是空的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-23 21:46:32 | 显示全部楼层

['1', '清华大学(北京)', '100']]
[['1', '清华大学(北京)', '100'], ['2', '北京大学', '80.5']]
[['1', '清华大学(北京)', '100'], ['2', '北京大学', '80.5'], ['3', '香港中文大学', '71.0']]
[['1', '清华大学(北京)', '100'], ['2', '北京大学', '80.5'], ['3', '香港中文大学', '71.0'], ['4', '浙江大学', '66.1']]
[['1', '清华大学(北京)', '100'], ['2', '北京大学', '80.5'], ['3', '香港中文大学', '71.0'], ['4', '浙江大学', '66.1'], ['5', '香港大学', '62.0']]
[['1', '清华大学(北京)', '100'], ['2', '北京大学', '80.5'], ['3', '香港中文大学', '71.0'], ['4', '浙江大学', '66.1'], ['5', '香港大学', '62.0'], ['6', '中国科学技术大学', '61.4']]
[['1', '清华大学(北京)', '100'], ['2', '北京大学', '80.5'], ['3', '香港中文大学', '71.0'], ['4', '浙江大学', '66.1'], ['5', '香港大学', '62.0'], ['6', '中国科学技术大学', '61.4'], ['7', '上海交通大学', '58.9']]
[['1', '清华大学(北京)', '100'], ['2', '北京大学', '80.5'], ['3', '香港中文大学', '71.0'], ['4', '浙江大学', '66.1'], ['5', '香港大学', '62.0'], ['6', '中国科学技术大学', '61.4'], ['7', '上海交通大学', '58.9'], ['8', '复旦大学', '56.8']]
[['1', '清华大学(北京)', '100'], ['2', '北京大学', '80.5'], ['3', '香港中文大学', '71.0'], ['4', '浙江大学', '66.1'], ['5', '香港大学', '62.0'], ['6', '中国科学技术大学', '61.4'], ['7', '上海交通大学', '58.9'], ['8', '复旦大学', '56.8'], ['9', '清华大学(新竹)', '56.5']]
[['1', '清华大学(北京)', '100'], ['2', '北京大学', '80.5'], ['3', '香港中文大学', '71.0'], ['4', '浙江大学', '66.1'], ['5', '香港大学', '62.0'], ['6', '中国科学技术大学', '61.4'], ['7', '上海交通大学', '58.9'], ['8', '复旦大学', '56.8'], ['9', '清华大学(新竹)', '56.5'], ['10', '台湾大学', '54.8']]
[['1', '清华大学(北京)', '100'], ['2', '北京大学', '80.5'], ['3', '香港中文大学', '71.0'], ['4', '浙江大学', '66.1'], ['5', '香港大学', '62.0'], ['6', '中国科学技术大学', '61.4'], ['7', '上海交通大学', '58.9'], ['8', '复旦大学', '56.8'], ['9', '清华大学(新竹)', '56.5'], ['10', '台湾大学', '54.8'], ['11', '北京师范大学', '53.9']]
部分列表信息
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-23 22:04:01 | 显示全部楼层    本楼为最佳答案   
本帖最后由 yjsx86 于 2020-2-23 22:06 编辑


for i in ulist[:num]: 的上面和下面的print缺 )

我尝试运行下你的代码 发现tplt = '{0:^10}\t{1:{3}^6}\t{:^10}这里前两个给了位置参数, 第三个没写, 这里也会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-2 23:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表