第一个爬虫

1、使用requests的get()函数访问必应网站20次,打印返回状态,text()内容,计算text属性和content属性所返回网页内容的长度。

代码如下:

1 import requests
2 for i in range(20):
3     r = requests.get('https://cn.bing.com', verify=False)
4     r.encoding="utf-8"
5     print(r.status_code) #返回状态
6     print(r.text)
7     r.content
8     print(len(r.text))
9     print(len(r.content))
爬虫

 

结果如下:

 

 

 2、bs4的使用

 

a.打印head标签内容和学号后两位

b.获取body标签内容

c.获取id为first的标签对象

d.获取并打印html页面中的中文字符

代码如下:

1 import re
2 from bs4 import BeautifulSoup
3 file=open('D:/python/pythonfile/onepa.html','r').read()
4 soup=BeautifulSoup(file,'html.parser')
5 print(soup.head,'30')
6 print(soup.body)
7 print(soup.find_all(id="first"))
8 print(re.findall('[\u4e00-\u9fa5]+',soup.text))
网页爬取

结果如下:

 

 3、从中国大学排名网站爬取2019年大学排名

代码如下:

 1 import requests
 2 from bs4 import BeautifulSoup
 3 import bs4
 4 def getHTMLText(url) :
 5     try:
 6         r = requests.get(url,timeout = 30)
 7         r.raise_for_status()
 8         r.encoding = r.apparent_encoding
 9         return r.text
10     except:
11         print("获取失败")
12     return ''
13 
14 def fillUnivlist(ulist,html):
15     soup = BeautifulSoup(html,"html.parser")
16     for tr in soup.find('tbody').children:
17         if isinstance(tr,bs4.element.Tag):
18             tds = tr('td')
19             ulist.append([tds[0].string,tds[1].string,tds[2].string,tds[3].string])
20     pass
21 
22 def printUnivlist(ulist,num):
23     print("{:^4}\t{:<15}\t{:<8}\t{:<8}".format("排名","学校名称","省市","总分"))
24     for i in range(num):
25         u = ulist[i]
26         print("{:^4}\t{:<15}\t{:<8}\t{:<8}".format(u[0],u[1],u[2],u[3]))
27 
28 def main(num):
29     allUniv=[]
30     url='http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html'
31     html = getHTMLText(url)
32     fillUnivlist(allUniv,html)
33     printUnivlist(allUniv,num)
34 main(20)
大学排名爬取

结果如下:

 将fillUnivlist函数稍微修改,可使得大学排名存储于csv文件中:

def fillUnivlist(allUniv,html):
    soup = BeautifulSoup(html,"html.parser")
    for tr in soup.find('tbody').children:
        if isinstance(tr,bs4.element.Tag):
            tds = tr('td')
            #在列表中增加需要的对应字段,大学排名,大学名称,大学评分
            allUniv.append([tds[0].string,tds[1].string,tds[2].string,tds[3].string])
    pass

    import csv
    with open('D:/python/Univ.csv', 'w') as f:
        writer = csv.writer(f)
        # 将列表的每条数据依次写入csv文件, 并以逗号分隔
        writer.writerows(allUniv)
fillUnivlist

部分结果如图:

 

posted @ 2020-05-19 23:55  zhENie  阅读(186)  评论(0)    收藏  举报