| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> python爬虫实例(1)————爬取豆瓣电影排行前250获取电影名称和网络链接[静态网页] -> 正文阅读 |
|
[Python知识库]python爬虫实例(1)————爬取豆瓣电影排行前250获取电影名称和网络链接[静态网页] |
目录 1.算法原理:(1)利用import命令导入模块或者导入模块中的对象; ①利用requests库获取数据; ②用BeautifulSoup库将网页源代码转换成BeautifulSoup类型,以便于数据的解析和处理; ③用time库进行时间延时,避免访问速度过快被封禁(封禁后会一段时间内无法进行对网址的访问); (2)利用resquests.get()获取的数据,其中第一个参数为网页链接,第二个参数为请求头Headers,返回的数据类型为字符串类型网页源代码; (3)利用BeautifuSoup()命令将获取的网页源代码转化为BeautifuSoup对象,第一个参数为要解析的HTML文本,即网页源代码,第二个参数为解析HTML的解析器; (4)利用CSS选择器,找到我们所需要的数据,在CSS选择器中,“#”表示id,“.”表示class; (5)tag(标签)对象的常用属性/方法
例如: (6)字符串的format格式:<模板字符串>.format(<以逗号分隔的参数>),format()中参数和前面的{}顺序一 一对应例如:
也可以在{}中加入序号,format()括号中类似列表进行读取,序号对应列表的下标,例如:
也可以给占位符{}命名,例如:
以上三种都输出:我是小浪,来自中国。 2.程序流程:(1)利用import导入第三方库requests,time和bs4库中的BeautifulSoup; (2)创建get_film函数,形参为变量link(用于传入网址,因为每页只有25部电影,爬取250部,每个网页链接末尾的查询字符串会有所不同) (3)为了应对反爬虫机制,这里修改请求头,将网页中User-Agent字段定义为字典,传入requests.get()命令中,赋值给变量res(当然,也有其他的方法,比如通过别的IP访问网站,具体请自己查看requests的官方文档:https://cn.python-requests.org/zh_CN/latest/); ①:?打开豆瓣电影top250排行版,右击(以搜狗浏览器为例)--->审查元素,点击方块内图标 ?②:随便点击一个电影名,以《肖申克的救赎》为例,网页加载完毕点击Network标签,里面可能为空的,刷新一下网页就好了。点击Network——>name中第一个标签——>找到Requests Headers标签——>找到User-Agent字段。 ?(4)将res.text(源代码的字符串格式)传给BeautifulSoup命令,并且用Python内置的解析器html.parser,赋值给变量soup; ?(5)利用CSS选择器找到标签为div,class="hd"的所有元素(随便点击一部电影名称,以《肖申克的救赎》为例,观察到的规律为电影链接、电影名分布在标签为:div,class="hd"的标签“a”中),传入soup.select()命令中,赋值给item; ?(6)遍历item中的所有元素,观察发现链接在标签a中的href属性中,电影名在标签a中第一个标签span的文本中,此时用find命令可以找到第一个符合条件的元素,找到第一个标签其中的文本内容,并输出电影名和电影链接; ? (7)观察豆瓣10页的网页链接(每页25个电影,其实就观察几页就可以发现规律): https://movie.douban.com/top250?start=0&filter=(第一页,从一开始网页打开没有问号后的查询字符串,从其他页跳到第一页就有了,第一页带查询字符串和不带查询字符串打开内容相同) https://movie.douban.com/top250?start=25&filter=(第二页) https://movie.douban.com/top250?start=50&filter=(第三页) 通过以上三个网页链接的对比发现,只有start后面的发生了改变,那么就可以利用字符串的format格式,进行创建字符串列表link_all (8)遍历10页网页,传入之前建立的函数get_film,利用time.sleep()进行延时爬取,防止访问速度过快被对方服务器封禁。 3.程序代码:
4.运行结果(部分结果展示):5.结果分析:? ? ?程序获取的结果与预期结果相同,在找到电影名的过程中可以使用find和find_all命令,可以不使用CSS选择器,也可以将电影名存到txt文档,或者excel文档中,便于储存。此程序仅演示豆瓣电影名、电影网络链接,其他静态网页也可通过此方法进行爬取。 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/25 13:15:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |