python之网络爬虫

python之网络爬虫

首先需要安装好requests库,之后引用库import requests
1、requests对象的属性
get(url,timeout=n)对应于http的get方法,设定每次请求超时时间为n秒
status_code请求的返回状态,整数,200表示连接成功,404表示失败
raise_for_status()如果不是200,则产生异常
text即url对应的页面内容
encoidng响应内容的编码形式
content响应内容的二进制形式

import requests
r=requests.get("http://www.baidu.com")
r.status_code
r.encoding
r.text

在这里插入图片描述
需要制定编码方式是utf-8才能正常显示中文字符
在这里插入图片描述
2、BeautifulSoup库对HTML页面格式进行解析
对HTML页面格式进行解析的代码

from bs4 import BeautifulSoup
soup=BeatifulSoup(r.text)

BeautifulSoup对象的常用属性有head、title、body、p、strings、stripped_strings

爬虫实例:USNews 美国大学排名
在做爬虫之前首先需要对网页的标签有一个大致的了解,我之所以用soup.find(“table”)而不是soup.find_all(“table”)是因为我发现我需要的内容已经包含在第一个table标签里了,find方法是返回第一个指定的标签内容,find_all是返回所有的标签内容。

import requests
from bs4 import BeautifulSoup
rank=[]

def getHTMLText(url):
    try:
        r=requests.get(url,timeout=30)  #获取HTML页面内容
        r.raise_for_status()
        r.encoding="utf-8"    #指定解码方式
        return r.text   #返回文本内容
    except:
        return "NO"

def fillList(soup):
    table=soup.find("table")  #寻找到第一个table标签的内容
    data=table.find_all("tr")   #寻找所有tr标签的内容
    for tr in data:  #遍历
       single=[]
       ltd=tr.find_all("td")   #寻找到所有td标签的内容
       for td in ltd:
           if len(td) !=0:
               single.append(td.string)   #将字符串的部分填入列表
           else:
               continue
       rank.append(single)


url="http://rankings.betteredu.net/usnews/best-colleges/national-universities-rangkings/2019.html"   #指定网址
r=getHTMLText(url)  #得到HTML页面内容
soup=BeautifulSoup(r,"html.parser")     #解析HTML页面内容
fillList(soup)  #填充列表
for i in range(len(rank)):   #打印输出
    print(rank[i])

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_39905917/article/details/84225216