3.10-通过requests、BeautifulSoup、webbrowser模块的相关方法,爬取网页数据示例程序(一)

import requests,bs4
res=requests.get('https://www.hao123.com/')
print('res对象的类型:',type(res))
res.raise_for_status() ###raise_for_status() 方法用来确保程序在下载失败时停止,预防程序发生未知错误。
noStarchSoup=bs4.BeautifulSoup(res.text) ###利用 requests.get()函数下载主页,然后将响应结果的text属性传递给 bs4.BeautifulSoup(),然后再返回的给BeautifulSoup 对象保存在变量 noStarchSoup 中。
type(noStarchSoup)
elems=noStarchSoup.select('div')
print(type(elems))
print('www.hao123.com网站的div个数为:',len(elems))
print(type(elems[2]))
print('www.hao123.com网站第89个div内的内容是:',elems[88].getText())
运行结果为:

res对象的类型:
/home/pyvip/projects/home/pyvip/projects/2019/In march/py3.9-3.py:5: UserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system ("html.parser"). 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 5 of the file /home/pyvip/projects/home/pyvip/projects/2019/In march/py3.9-3.py. To get rid of this warning, pass the additional argument 'features="html.parser"' to the BeautifulSoup constructor.

noStarchSoup=bs4.BeautifulSoup(res.text) ###利用 requests.get()函数下载主页,然后将响应结果的text属性传递给 bs4.BeautifulSoup(),然后再返回的给BeautifulSoup 对象保存在变量 noStarchSoup 中。

www.hao123.com网站的div个数为: 190

www.hao123.com网站第89个div内的内容是: 首页电视剧最新电影新闻头条八卦娱乐热门游戏小 游 戏今日特价特价旅游热点车讯头条新闻人民网新华网央视网国际在线中国日报中国网中经网光明网央广网求是网中青网网信网广州市政府电视剧综艺游戏小游戏电影直播动画漫画新闻娱乐旅游特价彩票星座搞笑小说教育考试股票理财推荐社会娱乐生活体育习重视河南“三农工作”对老乡最深的牵挂中国人的努力 从太空也能看到世上最长寿的人打开快递 30万的黄金变塑料大批假冒食品集中销毁 745箱零食堆成山"插座一哥"赔10亿 其公司日赚1亿代表建议:恢复"五一"七天长假 台海军一艘护卫舰遭沙特油轮撞击为何不说是日本?财长为中国辩护男子中数亿大奖 前妻:不后悔离婚美雇员行李中夹带迫击炮弹 俄火了法官顶住压力作出无罪判决 被记二等功分娩之痛 60名中学生撕心尖叫一艘高速船疑似撞到鲸鱼 致超80人受伤百度•贴吧新浪•微博搜狐•热点腾 讯网 易爱 奇 艺天猫•精选凤 凰 网淘 宝 网免费游戏百度地图hao123影视京东商城苏宁易购荣耀专区斗鱼 TV优 酷 网聚 划 算东方财富•理财58 同 城天猫超市携程旅行网12306hao123旅游瓜子二手车萌主页•动漫Booking酒店学 信 网头条新闻体育•NBA4399游戏彩票•双色球爱 淘 宝网易云音乐天涯社区知 乎哔哩哔哩直 播 吧QQ 邮 箱163 邮箱126 邮箱139 邮箱新浪邮箱搜狐邮箱工商银行建设银行农业银行中国银行招商银行交通银行邮政储蓄知 网豆 瓣聚划算优质月嫂新房装修无息贷款英语口语亲子鉴定去除甲醛游戏魔域永恒屠龙荣耀西游零纪元蓝月传奇17游戏大全乾坤战纪魔兽世界屠龙攻沙新热六间房直播苏宁易购7座家用车美女秀场iPhone降价爆款必抢新款帕萨特旧机换新推荐安居客房产二手评估热销楼盘精选二手车二手房急售二手好车三亚免税店大理古城优选名企招聘自考本科热门职位考研真题名师辅导班剑桥英语寒假冬令营同城闪送生活近视眼手术无痛拔牙隐形牙套妇科检查无痛分娩颈椎病治疗皓齿美白眼袋修复广告电视剧电影新闻娱乐体育小游戏新游特价购物综艺软件理财推 荐更多>>教你理财天猫购物季千图网苏宁超市微信 南方网视 频更多>>爱奇艺高清优酷网百度视频腾讯视频芒果TV搜狐视频网络自制影 视更多>>电视剧电影•购票动漫综艺电视直播院线大片热点资讯手绘4年抗癌日记游 戏更多>>4399游戏7k7k游戏1717337游戏hao123游戏游民星空新 闻更多>>新浪新闻腾讯新闻百度新闻搜狐新闻参考消息环球网澎湃新闻看 点更多>>中华军事米尔军事铁血军事环球军事凤凰军事新浪军事void function(e,t){for(var n=t.getElementsByTagName("img"),a=+new Date,i=[],o=function(){this.removeEventListener&&this.removeEventListener("load",o,!1),i.push({img:this,time:+new Date})},s=0;s< n.length;s++)!function(){var e=n[s];e.addEventListener?!e.complete&&e.addEventListener("load",o,!1):e.attachEvent&&e.attachEvent("onreadystatechange",function(){"complete"==e.readyState&&o.call(e,o)})}();alog("speed.set",{fsItems:i,fs:a})}(window,document);

Process finished with exit code 0



知识点总结:
requests模块有如下方法:

(1)、requests.get()方法:requests.get()用来下载一个网页,该方法用来接受一个要下载的 URL 字符串,URL放在括号内。通过在 requests.get()的返回值上调用 type(),你可以看到它返回一个 Response 对象,其中包含了 Web 服务器对你的请求做出的响应。
(2)、raise_for_status()方法:用来确保程序在下载失败时停止,预防程序发生未知错误。它总是在调用requests.get()之后再调用raise_for_status(),确保下载确实成功,然后再让程序继续。
(3)、

BeautifulSoup模块:
用来解析html文件,并从html页面中提取信息。该模块名称是bs4。它有如下方法:

(1)、bs4.BeautifulSoup()方法:它调用时需要一个字符串,其中包括将要解析的 HTML。
bs4.BeautifulSoup()函数返回一个BeautifulSoup对象,也就是说BeautifulSoup()方法是从html中创建一个BeautifulSoup对象。

(2)、select()方法:用于寻找网页上的元素。select()方法将返回一个Tag对象的列表。针对需要寻找的元素,调用method()方法,传入一个字符串作为CSS选择器,这样就可以取得WEB页面元素了。
传递给select()方法的选择器有:

soup.select('div') 所有名为
的元素
               soup.select('#author') 带有 id 属性为 author 的元素
soup.select('.notice') 所有使用 CSS class 属性名为 notice 的元素
soup.select('div span') 所有在
元素之内的元素
soup.select('div > span') 所有直接在
元素之内的元素,中间没有其他元素
soup.select('input[name]') 所有名为,并有一个 name 属性,其值无所谓的元素
soup.select('input[type="button"]') 所有名为,并有一个 type 属性,其值为 button 的元素
webbrowser模块:
        webbrowser模块的open()方法可以启动一个新的浏览器,打开指定的URL。例如:

                             >>> import webbrowser
                             >>> webbrowser.open('http://inventwithpython.com/')

Python endswith()方法:

                     描述:endswith() 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数"start"与"end"为检索字符串的开始与结束位置。

    用法:str.endswith(suffix[, start[, end]])

 

Python os.makedirs() 方法:

                   描述:os.makedirs() 方法用于递归创建目录。像 mkdir(), 但创建的所有intermediate-level文件夹需要包含子目录。

                      makedirs()方法语法格式如下:os.makedirs(path, mode=0o777)

 

Python 字典(Dictionary) setdefault()方法:

                    描述:Python 字典 setdefault() 函数和get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值。

                    setdefault()方法语法:dict.setdefault(key, default=None)

 

3.10-通过requests、BeautifulSoup、webbrowser模块的相关方法,爬取网页数据示例程序(一)_第1张图片

3.10-通过requests、BeautifulSoup、webbrowser模块的相关方法,爬取网页数据示例程序(一)_第2张图片

 

 

你可能感兴趣的:(3.10-通过requests、BeautifulSoup、webbrowser模块的相关方法,爬取网页数据示例程序(一))