python 利用Beautifulsoup爬取笑话网站

news/2024/5/12 18:43:18/文章来源:https://blog.csdn.net/weixin_34067102/article/details/92388290

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

利用Beautifulsoup爬取知名笑话网站

首先我们来看看需要爬取的网站:http://xiaohua.zol.com.cn/

1.开始前准备

1.1 python3,本篇博客内容采用python3来写,如果电脑上没有安装python3请先安装python3.

1.2 Request库,urllib的升级版本打包了全部功能并简化了使用方法。下载方法:

pip install requests

1.3 Beautifulsoup库, 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.。下载方法:

pip install beautifulsoup4

1.4 LXML,用于辅助Beautifulsoup库解析网页。(如果你不用anaconda,你会发现这个包在Windows下pip安装报错)下载方法:

pip install lxml

1.5 pycharm,一款功能强大的pythonIDE工具。下载官方版本后,使用license sever免费使用(同系列产品类似),具体参照http://www.cnblogs.com/hanggegege/p/6763329.html。

2.爬取过程演示与分析

from bs4 import BeautifulSoup
import os
import requests

导入需要的库,os库用来后期储存爬取内容。

随后我们点开“最新笑话”,发现有“全部笑话”这一栏,能够让我们最大效率地爬取所有历史笑话!

我们来通过requests库来看看这个页面的源代码:

from bs4 import BeautifulSoup
import os
import requests
all_url = 'http://xiaohua.zol.com.cn/new/ 
headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}
all_html=requests.get(all_url,headers = headers)
print(all_html.text)

header是请求头,大部分网站没有这个请求头会爬取失败

部分效果如下:

通过源码分析发现我们还是不能通过此网站就直接获取到所有笑话的信息,因此我们在在这个页面找一些间接的方法。

点开一个笑话查看全文,我们发现此时网址变成了http://xiaohua.zol.com.cn/detail58/57681.html,在点开其他的笑话,我们发现网址部都是形如http://xiaohua.zol.com.cn/detail?/?.html的格式,我们以这个为突破口,去爬取所有的内容

我们的目的是找到所有形如http://xiaohua.zol.com.cn/detail?/?.html的网址,再去爬取其内容。

我们在“全部笑话”页面随便翻到一页:http://xiaohua.zol.com.cn/new/5.html ,按下F12查看其源代码,按照其布局发现 :

每个笑话对应其中一个

  • 标签,分析得每个笑话展开全文的网址藏在href当中,我们只需要获取href就能得到笑话的网址

    from bs4 import BeautifulSoup
    import os
    import requests
    RootUrl = 'http://xiaohua.zol.com.cn/new/'
    headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}
    RootCode=requests.get(RootUrl,headers = headers)
    #print(RootCode.text)
    Soup = BeautifulSoup(RootCode.text,'lxml')
    SoupList=Soup.find_all('li',class_ = 'article-summary')
    for i in SoupList:#print(i)SubSoup = BeautifulSoup(i.prettify(),'lxml')list2=SubSoup.find_all('a',target = '_blank',class_='all-read')for b in list2:href = b['href']print(href)

    我们通过以上代码,成功获得第一页所有笑话的网址后缀:

    也就是说,我们只需要获得所有的循环遍历所有的页码,就能获得所有的笑话。

    上面的代码优化后:

    from bs4 import BeautifulSoup
    import requests
    import osRootUrl = 'http://xiaohua.zol.com.cn/new/'
    headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}
    RootCode=requests.get(RootUrl,headers = headers)def GetJokeUrl():JokeUrlList = []Soup = BeautifulSoup(RootCode.text,'lxml')SoupList=Soup.find_all('span',class_ = 'article-title')for i in SoupList:SubSoup = BeautifulSoup(i.prettify(),'lxml')JokeUrlList.append("http://xiaohua.zol.com.cn/"+str(SubSoup.a['href']))return JokeUrlList

    简单分析笑话页面html内容后,接下来获取一个页面全部笑话的内容:

  • from bs4 import BeautifulSoup
    import requests
    import osRootUrl = 'http://xiaohua.zol.com.cn/new/'
    headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}
    RootCode=requests.get(RootUrl,headers = headers)def GetJokeUrl():JokeUrlList = []Soup = BeautifulSoup(RootCode.text,'lxml')SoupList=Soup.find_all('span',class_ = 'article-title')for i in SoupList:SubSoup = BeautifulSoup(i.prettify(),'lxml')JokeUrlList.append("http://xiaohua.zol.com.cn/"+str(SubSoup.a['href']))return JokeUrlListdef GetJokeText(url):HtmlCode = requests.get(url,headers=headers) #don not forgetSoup = BeautifulSoup(HtmlCode.text,'lxml')Content = Soup.find_all('p')for p in Content:print(p.text)def main():JokeUrlList = GetJokeUrl()for url in JokeUrlList:GetJokeText(url)if __name__ == "__main__":main()
    

    效果图如下:

     

  • 大功告成!

转载于:https://my.oschina.net/u/3444234/blog/1532350

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_741470.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器跑网站用nigx还是apache,Apache和IIS及nginx三大web服务器,新手站长该如何选择?...

网站上线时第一件事就是搭建运行环境,首先要选择的就在服务器上使用哪一个web服务器,现在win系统默认自带IIS而Linux则自带Apache,如果需要使用nginx则需要单独安装。困扰新手站长的就是web服务到底该使用哪一个,目前流行的3大web…

网站注册的域名服务器,网站域名注册和服务器

网站域名注册和服务器 内容精选换一换购买服务及配置特性时,操作步骤中未框选的配置项请保持默认值。申请服务时,未开通企业管理的用户页面无“企业项目”参数项,无需进行配置。如需开通企业项目,请参考如何开通企业项目/企业多账…

MOSS2007的网站和工作区

11.7 网站和工作区 在Microsoft Office Server 2007站点中,可使用顶级网站和子网站将网站内容划分为明确的、单独的可管理网站。顶级网站可以拥有多个子网站,而这些子网站自己也可以拥有多个子网站,可根据用户需要向下建设无限层次的子网站。…

如何使用Orchard搭建敏捷个人的网站(2)

在如何使用Orchard搭建敏捷个人的网站(1)中讲解了如何使用Orchard搭建一个简易的敏捷个人内容网站,第一篇主要讲解了如何下载安装主题、增加blog、制作菜单等,今天我们继续讲解一下如何增加搜索功能、增加自定义的内容类型以及显示…

12306订票候补是个坑_买票请认准12306!铁路部门:从未授权其他网站售票

春运首日的火车票已经可以在中国铁路官方APP铁路12306上购买。来源 网络截图华龙网-新重庆客户端12月16日14时30分讯(记者 姜念月)据成都铁路12306消息,2020年铁路春运为期为40天,其中节前为15天,节后25天,按照铁路春运火车票互联…

如何优化企业网站

大部分的中小企业网站却又都存在着这样的问题:网站新,内容少,缺少专业维护人员,这样的网站怎么样才能在互联网中生存下去呢?觉得对于中小企业网站的天生的劣势,我们就应该从各个细节上分析每个要点,这样才…

Arcgis更换布局模板_响应式网站作用+模板用法科普

随着移动端网站访问需求增加,“响应式网站”越来越受到用户欢迎。到底什么叫响应式网站呢?其实就是网站效果可以随着屏幕尺寸大小而自适应,不会发生变形、扭曲、缺失的现象。不管你是在使用手机、iPad,还是电脑,页面都…

全文搜索引擎有哪些?_五色时光教大家SEO搜索引擎优化方案

菜鸟请留言讨论,老鸟们请点评不足。谢谢最近开始了我的学习生涯—SEO搜索引擎优化的学习,之前看过很多的资料,也一直在学习,现在我的导师带着我一步一步的去学习,还给了我一个网站去实操,现在我总结了一下我…

刷网站关键字_毛刷厂的互联网营销之路——网站推广SEO篇

毛刷厂的互联网营销之路——网站推广SEO篇来源:安徽享搜互联科技有限公司官网谈起营销,若简单理解多数人想到的会是商品和渠道,营销的概念很广泛但不仅仅只限于上述两方面。目前国内大多数毛刷厂多是靠老客户介绍、业务员联系而来的订单&…

如何让网站打开更快第三弹--开启压缩篇

老鸟请直接看开启压缩进阶篇。菜鸟还是慢慢随着老夫的思路看吧,哇哈哈。什么是压缩?大家还记得我们第一次接触winzip软件吗?非常神奇,一个文件,经过winzip压缩后,大小可以压缩成原来的30%左右。记得当年&am…

Web设计师应该收藏的11个网站

今天,本文与大家分享11个Web设计师应该收藏的网站,这些都是我最喜爱的寻找设计灵感的网站。我很喜欢Dribbble,可以花很长的时间只是为了浏览网页,欣赏那些耀眼的设计,也很喜欢One Page Love,这是我见过的最…

腾讯云iis8.5新建网站无法访问_云服务器可以用来做什么?

随着云计算产业链的不断延伸,虚拟化、分布式、运维管理等技术渐趋发展成熟,高大上的云计算首次走向平民化,常态化,互联网企业上云已经不再是什么高门槛的技术,引发全民上云热潮!云服务器作为云计算的重要衍…

百度收录支持ajax吗,百度收录网站的要求是什么?

提到百度收录的网站的要求,最开始我不得不说的就是搜索引擎爬虫的抓取。如果搜索引擎爬虫不能抓取你的网站,或者爬虫无法识别网页内容的话,那百度几乎不会收录你的网站了。爬虫抓取的可识别性在爬虫抓取网页时,如果根本不知道你的…

时尚的不仅仅是它们的服装,还有它们的网站设计

2019独角兽企业重金招聘Python工程师标准>>> 随着互联网的发展,越来越多的人选择甚至依赖于网上购物,“网店”已经成为时尚服装界的大生意。截止2017年,全球服装市场价值达3万亿美元,但不是那么容易就能做成在线的服装…

云服务器 ECS 建站教程:快速搭建 Moodle 课程管理系统

快速搭建 Moodle 课程管理系统Moodle 是一个开源课程管理系统,采用 PHP MySQL 方式运行的自由开源软件,遵循 GNU 公共许可协议。世界各地教育工作者越来越喜欢使用 Moodle 为学生建立网上动态网站。Moodle 平台界面简单、精巧,您可以根据需要…

jsp mysql 音乐网站_Maven+JSP+SSM+Mysql实现的音乐网站

项目简介本系统基于MavenJSPSSMMysql实现的音乐网站。主要实现的功能有音乐播放、下载、上传等几个模块。难度等级:中等技术栈编辑器Eclipse Version: 2020-03 (4.15.0)前端技术基础:htmlcssJavaScript后端技术SpringSpringMVCmybatis模板引擎&#xff1…

2012年在杭州承接的第一个软件项目经验浅谈 -- 门户网站数据库、ASP.NET程序性能改进...

去年受到博客园铁哥的影响力,放弃工作在家里开始做起自由职业者了,很快有一年时间了,这一年里明显感觉到身体好了很多,精神状态也有好转。 春节后就一直没生意在家里看看孩子,虽然也有几个小单子但是由于报价太低都婉…

.net mvc 获取iis基本登录网站登录账号_初识ABP vNext(3):vue对接ABP基本思路

Tips:本篇已加入系列文章阅读目录,可点击查看更多相关文章。目录前言开始登录权限本地化创建项目ABPvue-element-admin最后前言上一篇介绍了ABP的启动模板以及AbpHelper工具的基本使用,这一篇将进入项目实战部分。因为目前ABP的官方模板只支持…

软工作业(4)用户体验分析:以 “师路南通网站” 为例

用户体验分析:以“师路南通”网站为例 一、目标 针对师路南通 ,开展UX分析。 二、要求 基于我们列出的 7 条UX评价准则(Ref:Nielsen的十条准则),分析“师路南通” 在用户体验设计方面让你觉得满意的地方&am…

php 网站移动端自适应,HTML5实现移动端自适应的几种方法介绍

这篇文章主要介绍了HTML5 移动页面自适应手机屏幕四类方法总结,非常具有实用价值,需要的朋友可以参考下1、使用meta标签:viewportH5移动端页面自适应普遍使用的方法,理论上讲使用这个标签是可以适应所有尺寸的屏幕的,但是各设备对…