网上的Python教程大都是2.X版本的,python2.X和python3.X相比较改动比较大,好多库的用法不太一样,我安装的是python3.X,我们来看看详细的例子

0x01

春节闲着没事(是有多闲),就写了个简单的程序,来爬点笑话看,顺带记录下写程序的过程。第一次接触爬虫是看了这么一个帖子,一个逗逼,爬取煎蛋网上妹子的照片,简直不要太方便。于是乎就自己照猫画虎,抓了点图片。

科技启迪未来,身为一个程序员,怎么能干这种事呢,还是爬点笑话比较有益于身心健康。

0x02

在我们撸起袖子开始搞之前,先来普及点理论知识。

简单地说,我们要把网页上特定位置的内容,扒拉下来,具体怎么扒拉,我们得先分析这个网页,看那块内容是我们需要的。比如,这次爬取的是捧腹网上的笑话,打开 捧腹网段子页我们可以看到一大堆笑话,我们的目的就是获取这些内容。看完回来冷静一下,你这样一直笑,我们没办法写代码。在 chrome 中,我们打开 审查元素 然后一级一级的展开 HTML 标签,或者点击那个小鼠标,定位我们所需要的元素。

最后可以发现

中的内容就是我们所需要的笑话,在看第二条笑话,也是这样。于是乎,我们就可以把这个网页中所有的

找到,然后把里边的内容提取出来,就完成了。

0x03

好了,现在我们知道我们的目的了,就可以撸起袖子开始干了。这里我用的 python3,关于 python2 和 python3 的选用,大家可以自行决定,功能都可以实现,只是有些许不同。但还是建议用 python3。

我们要扒拉下我们需要的内容,首先我们得把这个网页扒拉下来,怎么扒拉呢,这里我们要用到一个库,叫 urllib,我们用这个库提供的方法,来获取整个网页。

首先,我们导入 urllib

代码如下:import urllib.request as request

然后,我们就可以使用 request 来获取网页了,

代码如下:

def getHTML(url):return request.urlopen(url).read()

人生苦短,我用 python,一行代码,下载网页,你说,还有什么理由不用 python。

下载完网页后,我们就得解析这个网页了来获取我们所需要的元素。为了解析元素,我们需要使用另外一个工具,叫做 Beautiful Soup,使用它,可以快速解析 HTML 和 XML并获取我们所需要的元素。

代码如下:soup = BeautifulSoup(getHTML("http://www.pengfu.com/xiaohua_1.html"))

用 BeautifulSoup 来解析网页也就一句话,但当你运行代码的时候,会出现这么一个警告,提示要指定一个解析器,不然,可能会在其他平台或者系统上报错。

代码如下:/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/bs4/init.py:181: UserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system ("lxml"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently.

The code that caused this warning is on line 64 of the file joke.py. To get rid of this warning, change code that looks like this:

BeautifulSoup([your markup])

to this:

BeautifulSoup([your markup], "lxml")

markup_type=markup_type))

解析器的种类 和 不同解析器之间的区别 官方文档有详细的说明,目前来说,还是用 lxml 解析比较靠谱。

修改之后

代码如下:soup = BeautifulSoup(getHTML("http://www.pengfu.com/xiaohua_1.html", 'lxml'))

这样,就没有上述警告了。

代码如下:p_array = soup.find_all('p', {'class':"content-img clearfix pt10 relative"})

利用 find_all 函数,来找到所有 class = content-img clearfix pt10 relative 的 p 标签 然后遍历这个数组

代码如下:for x in p_array: content = x.string

这样,我们就取到了目的 p 的内容。至此,我们已经达到了我们的目的,爬到了我们的笑话。

但当以同样的方式去爬取糗百的时候,会报这样一个错误

代码如下:raise RemoteDisconnected("Remote end closed connection without" http.client.RemoteDisconnected: Remote end closed connection without response

说远端无响应,关闭了链接,看了下网络也没有问题,这是什么情况导致的呢?莫非是我姿势不对?

打开 charles 抓包,果然也没反应。唉,这就奇怪了,好好的一个网站,怎么浏览器可以访问,python 无法访问呢,是不是 UA 的问题呢?看了下 charles,发现,利用 urllib 发起的请求,UA 默认是 Python-urllib/3.5 而在 chrome 中访问 UA 则是 User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36,那会不会是因为服务器根据 UA 来判断拒绝了 python 爬虫。我们来伪装下试试看行不行

代码如下:def getHTML(url):

head

ers = {'User-Agent': 'User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}

req = request.Request(url, headers=headers)

return request.urlopen(req).read()

这样就把 python 伪装成 chrome 去获取糗百的网页,可以顺利的得到数据。

至此,利用 python 爬取糗百和捧腹网的笑话已经结束,我们只需要分析相应的网页,找到我们感兴趣的元素,利用 python 强大的功能,就可以达到我们的目的,不管是 XXOO 的图,还是内涵段子,都可以一键搞定,不说了,我去找点妹子图看看。# -*- coding: utf-8 -*-

import sys

import urllib.request as request

from bs4 import BeautifulSoup

def getHTML(url):

headers = {'User-Agent': 'User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}

req = request.Request(url, headers=headers)

return request.urlopen(req).read()

def get_pengfu_results(url):

soup = BeautifulSoup(getHTML(url), 'lxml')

return soup.find_all('p', {'class':"content-img clearfix pt10 relative"})

def get_pengfu_joke():

for x in range(1, 2):

url = 'http://www.pengfu.com/xiaohua_%d.html' % x

for x in get_pengfu_results(url):

content = x.string

try:

string = content.lstrip()

print(string + '\n\n')

except:

continue

return

def get_qiubai_results(url):

soup = BeautifulSoup(getHTML(url), 'lxml')

contents = soup.find_all('p', {'class':'content'})

restlus = []

for x in contents:

str = x.find('span').getText('\n','
')

restlus.append(str)

return restlus

def get_qiubai_joke():

for x in range(1, 2):

url = 'http://www.qiushibaike.com/8hr/page/%d/?s=4952526' % x

for x in get_qiubai_results(url):

print(x + '\n\n')

return

if name == 'main':

get_pengfu_joke()

get_qiubai_joke()

【相关推荐】

以上就是python实现网络段子页爬虫案例的详细内容,更多请关注php中文网其它相关文章!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

python网页爬虫漫画案例_python实现网络段子页爬虫案例相关推荐

  1. python爬取网页防止重复内容_python解决网站的反爬虫策略总结

    本文详细介绍了网站的反爬虫策略,在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下. 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.这里我们只讨论数据采集部分. 一般网站从三个方面 ...

  2. python将txt转为字符串_python做第一只小爬虫

    "受尽苦难而不厌,此乃修罗之路" 本文技术含量过低,请谨慎观看 之前用R语言的Rcurl包做过爬虫,给自己的第一感觉是比较费劲,看着看着发际线就愈加亮眼,最后果断丢之.不过好的是和 ...

  3. python段子_Python抓取段子的爬虫

    问题导读 1.Python抓取段子的爬虫的需求是什么? 2.Python抓取段子的爬虫是如何实现的? 3.你认为该如何实现? 1.需求按下回车键,显示一个段子,要求显示段子的作者.点赞数.评论数.顶等 ...

  4. python3制作捧腹网段子页爬虫

    0x01 春节闲着没事(是有多闲),就写了个简单的程序,来爬点笑话看,顺带记录下写程序的过程.第一次接触爬虫是看了这么一个帖子,一个逗逼,爬取煎蛋网上妹子的照片,简直不要太方便.于是乎就自己照猫画虎, ...

  5. python网页数据存入数据库_python网络爬虫抓取动态网页并将数据存入数据库MySQL...

    简述 以下的代码是使用python实现的网络爬虫,抓取动态网页 http://hb.qq.com/baoliao/ .此网页中的最新.精华下面的内容是由JavaScript动态生成的.审查网页元素与网 ...

  6. python爬虫程序说明_Python即时网络爬虫:API说明

    API说明--下载gsExtractor内容提取器 1,接口名称 下载内容提取器 2,接口说明 如果您想编写一个网络爬虫程序,您会发现大部分时间耗费在调测网页内容提取规则上,不讲正则表达式的语法如何怪 ...

  7. python网页爬取方法_Python爬取网页的三种方法

    # Python爬取网页的三种方法之一:  使用urllib或者urllib2模块的getparam方法 import urllib fopen1 = urllib.urlopen('http://w ...

  8. python frame框架抓取_Python抓取框架Scrapy爬虫入门:页面提取

    前言 Scrapy是一个非常好的抓取框架,它不仅提供了一些开箱可用的基础组建,还能够根据自己的需求,进行强大的自定义.本文主要给大家介绍了关于Python抓取框架Scrapy之页面提取的相关内容,分享 ...

  9. python读取pcap获得端口_Python处理网络数据包示例(pcapy读pcap文件)

    Python处理网络数据包示例(pcapy读pcap文件) 最近在围观python,找了个pcapy处理pcap数据的代码 非常非常久以前的东西了,应该是在项目组做的半成品吧.今天重装机器,不经意翻出 ...

最新文章

  1. mysql 命令源码_MySQL常用命令
  2. 技术19期:1分钟入门数据治理!必看!【技术篇】
  3. python redis 订阅发布_Python-Redis的发布与订阅
  4. html新年倒计时代码_js实现倒计时
  5. LeetCode 1011. 在 D 天内送达包裹的能力(二分查找)
  6. html对话框跳转页面,html5各种页面切换效果和模态对话框用法总结
  7. L3-028 森森旅游 (30 分)-PAT 团体程序设计天梯赛 GPLT
  8. extjs6入门:用sencha cmd搭建简单的extjs6项目
  9. [转载] 2012年上半年信管网论文复习建议
  10. Java爬虫入门教程 开篇
  11. python计算学习,《统计学习方法》的Python实现:(1)感知机
  12. android 根据宽度调整字体大小,android 字体大小 根据分辨率 自动调整
  13. Vray和PS的冬景效果图制作教程蓝海创意云渲染
  14. 利用Python创建Excel条形图
  15. 看着大公司送的中秋礼物,我酸了。
  16. 【天光学术】旅游管理论文:大连金石滩旅游餐饮文化资源开发对策研究
  17. 大数据课程设计(一)二手房数据挖掘可视化
  18. 计算机er夏令营拿了优营,就一定能保研上岸吗?
  19. html5三国策略布阵,《战略三国》官方网站—联众三国策略页游
  20. 计算机病毒英文文献,计算机病毒外文翻译翻译英文外文外文翻译计算机病毒外文翻英文文献计算机.doc...

热门文章

  1. 如果你想与别人制造羁绊,就要承受流泪的风险
  2. 中国主导的.chn物联网域名首登世界舞台
  3. 游戏排行榜-Python实现
  4. 张朝阳先生,您能不能踏实一点?
  5. GIS工程师的成长之路
  6. python中符号计算三维可视化_Python科学计算三维可视化章节答案
  7. 重磅直播|视觉惯性SLAM之多约束扩展卡尔曼滤波
  8. 第七次人口普查数据与城镇化
  9. 2021年2月新乡春节限行规定 便签提醒你今天限行吗?
  10. 大数据助推国家治理现代化