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

el/2023/9/24 22:23:50

目录

    • 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键值对用来传入欲搜索关键词
在这里插入图片描述
代码如下:

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

实现效果:
在这里插入图片描述

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

网络图片链接的格式:
http://www.example.com/picture.jpg
从网上随意选择一张网页图片:
http://n.sinaimg.cn/sports/transform/282/w650h432/20190414/gmNm-hvscktf8159114.jpg
在这里插入图片描述
功能描述:
输入:网页图片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_encodingif 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.textexcept: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)

实现效果:
在这里插入图片描述
在这里插入图片描述

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

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

代码如下

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()

实现效果
在这里插入图片描述


http://www.ngui.cc/el/3419307.html

相关文章

数学建模之预测模型简要分析

以下对数学建模常用的几种预测方法进行归纳总结: 1.灰色预测模型: 1.1 GM(1,1)预测模型实际操作 1)数据检验与处理,判断数据列的级比是否都落在可容覆盖内,从而判断已知该数据列是否可进行灰色预…

MATLAB学习与使用:向量及其运算

1.MATLAB向量及其运算 (1)直接输入向量:a [1,2,3,4],b [2 1 4 5],c [1;2;3;4] a为行向量 b为行向量 c为列向量 (2)利用冒号表达式生成向量:a 1:2:12,b 1:5 默认间距为1 (3)线性等分向量的生成: y linspace(x1,x2)%默认生成100维的行向…

MATLAB学习与使用:使用矩阵绘制三维图形

MATLAB绘制三维图形 1.基本的绘图命令 1)plot3函数 plot3(x,y,z)%x,y,z为向量或者矩阵 注意x,y,z全为向量时向量长度必须相同 plot3(x,y,z,b.,MarkerSize,0.5) % MarkerSize 表示点的大小,b.表示绿色的点。 eg.绘制三维螺旋线(向量为参数&…

opencv学习与使用:图像边缘算法

图像边缘算法 numpy使用指南[菜鸟教程]http://www.runoob.com/numpy/numpy-tutorial.html opencv使用指南[官方文档]http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/tutorials.html 完整代码如下(python3) #-*- coding:utf-8 -*- #code…

opencv学习与使用:图像匹配

1.差分矩阵求和 numpy使用指南[菜鸟教程]http://www.runoob.com/numpy/numpy-tutorial.html opencv使用指南[官方文档]http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/tutorials.html 实现差分矩阵的算法 差分矩阵求和算法的核心在于差分矩阵,实质为…

LeetCode 初级算法数组篇

从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1…

C语言中fscanf函数读取double型浮点数的问题

在C语言里面, 将一个浮点数输出到文件中, 可以使用符号%f, 如 double a 0.0;fprintf(fp, "a %f", a);而如果要从文件中读取一个double类型的浮点数, 就不能用%f, 而要用%lf才可以. 如 double a;float b;fscanf(fp, "%f", &a); // 这里得到的a的数…

操作系统课程设计-页式虚拟存储管理页面置换算法-c++描述

1.目的和要求 存储管理的主要功能之一是合理的分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是:通过编写和调试请求页式存储管理中页面置换算法的模拟程序以加深对存储管理方案的理解,了解虚拟存储技术的特点&#xff0…

java Swing GUI程序中文显示乱码解决方法

Run As Run Configuration,在VM options中增加下面这句: -Dfile.encodinggbk

c#课程设计-基于VS2017开发学生成绩管理系统

c#课程设计-学生成绩管理系统 利用visual stdio2017MySQL5.5开发,有系统管理员、学生、教师、教学秘书4种不同身份,可实现成绩、课程信息、用户信息的增删改查 GitHub网址:https://github.com/geek728/ScoreManagement.git