- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Python爬虫实战
Python爬虫实战(1):爬取糗事百科段子
大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧。那么这次为大家带来,Python爬取糗事百科得小段子得例子。
首先,糗事百科大家都听说过吧?糗友们发得搞笑得段子一抓一大把,这次我们尝试一下用爬虫把她们抓取下来。
本篇目标
1。抓取糗事百科热门段子
2、过滤带有图片得段子
3。实现每按一次回车显示一个段子得发布时间,发布人,段子内容,点赞数。
糗事百科就是不需要登录得,所以也没必要用到Cookie,另外糗事百科有得段子就是附图得,我们把图抓下来图片不便于显示,那么我们就尝试过滤掉有图得段子吧、
好,现在我们尝试抓取一下糗事百科得热门段子吧,每按下一次回车我们显示一个段子。
1.确定URL并抓取页面代码
首先我们确定好页面得URL就是 ,其中最后一个数字1代表页数,我们可以传入不同得值来获得某一页得段子内容、
我们初步构建如下得代码来打印页面代码内容试试瞧,先构造最基本得页面抓取方式,瞧瞧会不会成功
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# -*- coding:utf-8 -*—
import urllib
import urllib2
?
?
page = 1
url = ’ + str(page)
try:
????request = urllib2、Request(url)
????response = urllib2。urlopen(request)
????print response。read()
except urllib2。URLError, e:
????if hasattr(e,code):
????????print e。code
????if hasattr(e,"reason”):
????????print e。reason
运行程序,哦不,它竟然报错了,真就是时运不济,命途多舛啊
1
2
3
line 373, in _read_status
?raise BadStatusLine(line)
httplib。BadStatusLine: ’
好吧,应该就是headers验证得问题,我们加上一个headers验证试试瞧吧,将代码修改如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# —*- coding:utf—8 —*-
import urllib
import urllib2
?
page = 1
url = ’’ + str(page)
user_agent = Mozilla/4。0 (compatible; MSIE 5、5; Windows NT)'
headers = { ’User—Agent : user_agent }
try:
????request = urllib2。Request(url,headers = headers)
????response = urllib2。urlopen(request)
????print response、read()
except urllib2。URLError, e:
????if hasattr(e,code”):
????????print e。code
????if hasattr(e,reason):
????????print e.reason
嘿嘿,这次运行终于正常了,打印出了第一页得HTML代码,大家可以运行下代码试试瞧。在这里运行结果太长就不贴了。
2.提取某一页得所有段子
好,获取了HTML代码之后,我们开始分析怎样获取某一页得所有段子。
首先我们审查元素瞧一下,按浏览器得F12,截图如下
我们可以瞧到,每一个段子都就是div class=”article? HYPERLINK " \t _blank" block?untagged mb15″ id=”…”…</div包裹得内容。
现在我们想获取发布人,发布日期,段子内容,以及点赞得个数。不过另外注意得就是,段子有些就是带图片得,如果我们想在 HYPERLINK ” \t "_blank" 控制台显示图片就是不现实得,所以我们直接把带有图片得段子给它剔除掉,只保存仅含文本得段子。
所以我们加入如下正则表达式来匹配一下,用到得方法就是 re。findall 就是找寻所有匹配得内容、方法得用法详情可以瞧前面说得正则表达式得介绍、
好,我们得正则表达式匹配语句书写如下,在原来得基础上追加如下代码
1
2
3
4
5
6
content = response.read().decode(’utf—8)
pattern = re、compile(〈div。*?class="author、*?〉
原创力文档


文档评论(0)