数据爬取(urllib+BeautifulSoup)

news/2024/7/19 10:59:58 标签: beautifulsoup, python, 爬虫

文章目录

  • 知识点总结
  • 案例

知识点总结

爬虫是一种按照一定规则,自动抓取互联网上网页中的相应信息的程序或脚本。

爬虫步骤

1.需求分析
2.找到要爬取信息的网站
3.下载request(网站返回的内容)
4.利用正则表达式-re,xpath-lxml(通过返回的信息找到需要爬取的数据内容)
5.找到mysql(存储找到的数据内容)

爬虫三要素

网页抓取
网页解析
数据存储

爬虫注意事项

1.遵守Robots协议(网站国际互联网界通行的道德规范,其目的是保护网站数据和敏感信息、确保用户个人信息和隐私不被侵犯),谨慎爬取
2.限制爬虫行为,禁止近乎DDOS(通过大量的数据包和目标服务器建立连接,占用目标服务器的带宽,导致目标服务器无法再去为正常的用户提供服务,表现为服务器炸了)的请求频率,一旦造成服务器瘫痪,约等于网络攻击
3.对于明显反爬,或者正常情况不能到达的页面不能强行突破,否则是Hacker行为
4.如果爬取到别人的隐私,立即删除,降低进局子的概率
2.静态网页和动态网页的区分
请填空描述,并各举一个例子进行描述,要求对案例进行抓图讲述。
静态页面是随着HTML代码的生成,页面的内容和显示效果就基本不会发生变化(除非修改页面代码)
动态页面,虽然同样页面代码不发生变化,但是其显示的内容确实可以随着时间环境或者数据操作的结果而发生变化。
静态页面和动态页面的认识应该定位在:是否有数据库加工这个环节。

python_27">python爬取技术学习

网页抓取库Urllib

请描述Urllib库的功能,并举例讲述如何使用Urllib库打开一个网页
urllib是Python内置的HTTP请求库,它包含4个模块:
1.request:最基本的HTTP请求模块,可以用来模拟发送请求。
2.error:异常处理模块,如果出现请求错误,可以捕获异常,然后进行重试或其他操作。
3.parse:工具模块,提供了许多URL处理方法,如拆分、解析、合并等。
4.robotparser:主要用于识别网站的rebots.txt文件,然后判断哪些网站可以爬,哪些网站不可以爬。

网页解析库Beautifulsoup

请描述Beautifulsoup库的功能,并举例讲述如何使用Beautifulsoup解析html数据。
解析html、简单获取网页标签信息、定位标签并获取内容

案例

任务要求
编写程序,翻页爬取我校主页上的学院动态模块的全部信息,具体要求如下:
(1)爬取地址为:https://www.hist.edu.cn/index/sy/xydt.htm。
(2)爬取模块列表中的三部分信息:院系,标题和 URL 地址信息。
(3)将爬取的信息存储到文件“xueyuandongtai.txt”中,一行显示一条,
信息院系,、标题和 URL 地址信息之间用逗号隔开。

python">import urllib.request
from bs4 import BeautifulSoup

# 输入url,返回该网页的源码
def getURL(urls):
    contents = []
    for url in urls:
        res = urllib.request.urlopen(url)
        contents.append(res.read().decode('utf-8'))
        # print(contents)
    return contents

# 输入content源码,返回lists数据
def resolveHtml(contents):
    lists = set()
    for content in contents:
        soup = BeautifulSoup(content, "html.parser")
        divs = soup.find_all('div', {'class': 'list-main-warp'})
        # print(len(divs))
        lis=divs[0].find_all('li')
        # print(len(lis))
        for li in lis:
            one=""
            #院系
            yuanxi_title=li.find_all('a')[0].string
            yuanxi=yuanxi_title.split("\xa0\xa0")[0]
            #url
            url=li.find_all('a')[0].get("href")
            #标题
            title=li.find_all('a')[0].get("title")
            one=url+","+title+","+yuanxi
            lists = lists | {one}
    # print(lists)
    return lists
# saveInfo:
#  输入:lists,filename
# 功能: 将lists中数据写入文件filename中
def saveInfo(lists,filename):
    with open(filename,"a+",encoding="utf-8") as fp:
        for i in lists:
            fp.write(i+"\n")
def main():
    urls = ["https://www.hist.edu.cn/index/sy/xsbg/{}.htm".format(str(i)) for i in range(1,29)]
    urls.append("https://www.hist.edu.cn/index/sy/xsbg.htm")
    # print(urls)
    contents=getURL(urls)
    lists=resolveHtml(contents)
    filename="xueyuandongtai.txt"
    saveInfo(lists,filename)
if __name__ == "__main__":
    main()

在这里插入图片描述


http://www.niftyadmin.cn/n/120714.html

相关文章

Linux用户空间与内核空间通信(Netlink通信机制)

一,什么是Netlink通信机制 Netlink是linux提供的用于内核和用户态进程之间的通信方式。但是注意虽然Netlink主要用于用户空间和内核空间的通信,但是也能用于用户空间的两个进程通信。只是进程间通信有其他很多方式,一般不用Netlink。除非需要…

fastadmin后台登录页修改

直接替换就行 <!DOCTYPE html> <html lang"{$config.language}"> <head>{include file"common/meta" /}<style type"text/css">body {color: #999;background-color: #f1f4fd;background-size: cover;}a {color: #444;…

【图神经网络】李宏毅

GNN 引入 假如要预测一个人是否是凶手。可以通过每个角色的特征训练出一个分类器。 有没有我们忽略的信息&#xff0c;或者我们可以利用但没有完全利用的信息。就是角色的关系。 这些角色关系可以让我们在做分类的时候获得一些额外的信息&#xff0c;可以帮助我们做更好的mode…

k8s学习之路 | Day19 k8s 工作负载 Deployment(上)

文章目录1. Deployment 基础1.1 什么是 Deployment1.2 简单体验 Deployment1.3 Deployment 信息描述1.4 如何编写 Deployment2. Deployment 简单特性2.1 赋予 Pod 故障转移和自愈能力2.2 更新 Deployment2.3 回滚 Deployment2.4 暂停、恢复 Deployment 的上线过程2.5 Deploymen…

利用python写一个gui小公举--环境搭建

文章目录背景搭建环境安装必要库添加工具快捷方式检验背景 在实习过程中遇到一个问题&#xff0c;某项目是通过python代码实现的&#xff0c;而且需要一直修改参数实现功能&#xff0c;过程有些繁琐。虽然师兄用PHP study搭了一个网站用于查看结果&#xff0c;但是还是过于繁琐…

中国不缺高端产品,缺的只是高端服务

作者 | 曾响铃 文 | 响铃说 最近&#xff0c;响铃受邀参加了讯飞智能办公本莫比俱乐部在广州举办的用户研学活动&#xff0c;感触颇多。 为什么会有这趟经历&#xff1f;说来也巧&#xff0c;前段时间因为开会需要入手了讯飞智能办公本X2&#xff0c;成了他们的用户&#xf…

论文投稿指南——中文核心期刊推荐(电影、电视艺术)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

教资教育知识与能力中学教学

目录 3.1 教学概述 3.2 教学过程 3.3 教学原则*【简答/辨析重点】 3.4 教学方法 3.5 教学组织形式 3.6 教学工作基本环节 3.7 教学评价 3.1 教学概述 1、教学的意义【14/18辨析】 教学是传授系统知识、促进学生发展的最有效形式&#xff1b; 教学是学校进行全面发展教…