python网络爬虫与信息提取实例

目录

    • 1.百度/360搜索关键词提交
    • 2.网络图片的爬取和存储
    • 3.中国大学排名定向爬虫

1.百度/360搜索关键词提交

搜索引擎关键词提交接口
百度的关键词接口:
http://www.baidu.com/s?wd=keyword
360的关键词接口:
http://www.so.com/s?q=keyword
功能描述:
输入:需要搜索的关键词
输出:搜索引擎搜索到的条目数量
提示:通过搜索引擎关键词接口,利用自定义的关键词向搜索引擎申请服务,得到返回搜索引擎返回的内容,用len()函数获取条目数量
关键代码r=requests.get(url,params=kv)kv键值对用来传入欲搜索关键词
python网络爬虫与信息提取实例_第1张图片
代码如下:

import requests
def gethtmltext(url):
    try:
        kv={'wd':keyword}
        r=requests.get(url,params=kv)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        return r.text
    except:
        print("爬取失败")
#if _name_ == "_main_":
url="http://www.baidu.com/s"
keyword=input("please input your requests:")
print(len(gethtmltext(url)))

实现效果:
python网络爬虫与信息提取实例_第2张图片

2.网络图片的爬取和存储

网络图片链接的格式:
http://www.example.com/picture.jpg
从网上随意选择一张网页图片:
http://n.sinaimg.cn/sports/transform/282/w650h432/20190414/gmNm-hvscktf8159114.jpg
python网络爬虫与信息提取实例_第3张图片
功能描述:
输入:网页图片URL链接
输出:将网页保存到本机指定目录与路径(root、path)
技术路线:requests-os
程序的结构设计:
我们使用了try/except的框架保证爬取过程的稳定性与可靠性
首先if not判断目的根目录是否存在,不存在就创建一个
接着if not判断文件是否存在,如果不存在就执行爬虫请求,保存图片到指定路径
否则输出文件已存在
出现错误输出爬取失败
try:
if not
if not
else
except:
print(‘爬起失败’)
关键代码:
我们预先设置文件标识符为f with open(path,'wb') as f:
接着写入从网页上爬取的二进制数据流(r.content)f.write(r.content)
有关with as的详细用法:https://www.cnblogs.com/DswCnblog/p/6126588.html
有关文件操作详细用法:https://blog.csdn.net/chenmozhe22/article/details/81434549
读取URL链接最后一个反斜杠/后的内容-即读取图片名path=root+url.split('/')[-1]
代码如下:

import requests
import os
def gethtmljpg(url,root,path):
    try:
        kv={'user-agent':'Mozilla/5.0'}
        r=requests.get(url,headers=kv)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        if not os.path.exists(root):
            os.makedirs(root)
        if not os.path.exists(path):
            with open(path,'wb') as f:
                f.write(r.content)
                f.close()
                print("图片保存成功")
        else:
            print("图片已存在")
        return r.text
    except:
        print("爬取失败")
#if _name_ == "_main_":
url="http://n.sinaimg.cn/sports/transform/282/w650h432/20190414/gmNm-hvscktf8159114.jpg"
#url=input("please input your url:")
root="D://PICS//"
path=root+url.split('/')[-1]
gethtmljpg(url,root,path)

实现效果:
python网络爬虫与信息提取实例_第4张图片
python网络爬虫与信息提取实例_第5张图片

3.中国大学排名定向爬虫

功能描述
输入:大学排名URL链接
输出:大学排名信息的屏幕输出(排名,大学名称,总分)
技术路线:requests‐bs4
定向爬虫:仅对输入URL进行爬取,不扩展爬取
程序的结构设计
步骤1:从网络上获取大学排名网页内容
步骤2:提取网页内容中信息到合适的数据结构
步骤3:利用数据结构展示并输出结果
利用列表存储二维数据
python网络爬虫与信息提取实例_第6张图片
代码如下

import requests
from bs4 import BeautifulSoup# 引入解析模块BS4
import bs4
#自定义函数,从网络上获取大学排名网页内容
def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()#判断状态码是否为200,产生异常信息
        r.encoding = r.apparent_encoding#调整合适的编码信息
        return r.text#返回已爬取网页内容
    except:
        return ""#状态码异常不爬取
#自定义函数,提取网页内容信息到合适的数据结构(列表)
def fillUnivList(ulist, html):
    soup = BeautifulSoup(html, "html.parser")#采用html解析器
    for tr in soup.find('tbody').children:#找到所有tbody标签信息获取所有大学相关信息,利用bs4库的children遍历
        if isinstance(tr, bs4.element.Tag):#在tbody标签中找到tr标签获取每一个大学的信息
            tds = tr('td')#在tr标签中利用列表存储每个td标签的相关字段
            ulist.append([tds[0].string, tds[1].string, tds[2].string, tds[3].string])        
#利用数据结构展示并输出
def printUnivList(ulist, num):
    provinces = input("请输入你要爬取的大学排名的省份:")
    tplt = "{0:^4}\t{1:{4}^12}\t{2:^8}\t{3:^6}"#输出模版
    print(tplt.format("排名","学校名称","省市","总分",chr(12288)))#采用中文空格填充
    for i in range(num):
        u=ulist[i]
        if u[2] == provinces:#只输出对应省份的学校
            print(tplt.format(u[0],u[1],u[2],u[3],chr(12288)))
    
def main():
    uinfo = []
    url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html'
    html = getHTMLText(url)
    fillUnivList(uinfo, html)
    printUnivList(uinfo, 549) # 最多549 univs
main()

实现效果
python网络爬虫与信息提取实例_第7张图片

你可能感兴趣的:(python语音基础)