python爬虫基础(二)---0基础也能看得懂

python爬虫基础(二)---0基础也能看得懂,第1张

概述python爬虫基础(二)—0基础也能看得懂前言BeautifulSoup库BeautifulSoup是一个可以从HTML或XML文件中提取数据的python库。它能够通过你换的转换器实现惯用的文档导航、查找、修改文档的方式。在python爬虫开发中,我们主要用到的是BeautifulSoup的查找提取功能,修改文档的方 Python爬虫基础(二)—0基础也能看得懂前言@H_419_8@BeautifulSoup库
Beautiful Soup是一个可以从HTML或XML文件中提取数据的python库。它能够通过你换的转换器实现惯用的文档导航、查找、修改文档的方式。在Python爬虫开发中,我们主要用到的是Beautiful Soup的查找提取功能,修改文档的方式很少用到。

@H_419_8@BeautifulSoup(label, ‘HTML.parser’)传入两个参数,第一个参数表示要提取的对象,第2个参数是HTML的标志。
常见函数:
prettify函数的作用是将传入的HTML字符串按照HTML的格式打印出来
Title函数可以查看HTML页面的标题。
find_all方法可以根据标签名、属性、内容查找文档,定制化查找想要查找的内容。

一、HTML网页内容@H_419_8@HTML: 主体框架,负责文档结构和内容。
CSS: 添加样式(文字大小、颜色、字体加粗等),负责文档样式和布局。
Js: 添加效果,可以让HTML更加生动好看,负责描述网页的行为。
HTML标记语言的层次非常清晰:
第二层包括头部分head和主体部分body,引入外部文件的标签都可以放在头部,body提供网页的具体内容。

@H_419_8@HTML标签作用(标签往往是成对出现的):

之间是表示文本、描述网页; 之间的文本是可见的网页内容; 之间的文本被显示为标题; @H_419_8@

之间的文本被显示为段落。 二、BeautifulSoup库爬取天气1.常见函数@H_419_8@prettify函数的作用是将传入的HTML字符串按照HTML的格式打印出来
Title函数可以查看HTML页面的标题。
find_all方法可以根据标签名、属性、内容查找文档,定制化查找想要查找的内容。

import requestsfrom bs4 import BeautifulSoupurl = "http://www.baIDu.com"response = requests.get(url)soup = BeautifulSoup(response.content,"HTML.parser")print(soup.prettify())
@H_419_8@打印出来的内容如下:

<!DOCTYPE HTML><!--STATUS OK--><HTML> <head>  <Meta content="text/HTML;charset=utf-8" http-equiv="content-type"/>  <Meta content="IE=Edge" http-equiv="X-UA-Compatible"/>  <Meta content="always" name="referrer"/>  <link href="http://s1.bdstatic.com/r/www/cache/bdorz/baIDu.min.CSS" rel="stylesheet" type="text/CSS"/>  <Title>   百度一下,你就知道  </Title> </head> <body link="#0000cc">  <div ID="wrapper">   <div ID="head">    <div >     <div >      <div >       <div ID="lg">        <img height="129" hIDefocus="true" src="//www.baIDu.com/img/bd_logo1.png" wIDth="270"/>       </div>       <form action="//www.baIDu.com/s"  ID="form" name="f">        <input name="bdorz_come" type="hIDden" value="1"/>        <input name="IE" type="hIDden" value="utf-8"/>        <input name="f" type="hIDden" value="8"/>        <input name="rsv_bp" type="hIDden" value="1"/>        <input name="rsv_IDx" type="hIDden" value="1"/>        <input name="tn" type="hIDden" value="baIDu"/>        <span >         <input autocomplete="off" autofocus=""  ID="kw" maxlength="255" name="wd" value=""/>        </span>        <span >         <input  ID="su" type="submit" value="百度一下"/>        </span>       </form>      </div>     </div>     <div ID="u1">      <a  href="http://news.baIDu.com" name="tj_trnews">       新闻      </a>      <a  href="http://www.hao123.com" name="tj_trhao123">       hao123      </a>      <a  href="http://map.baIDu.com" name="tj_trmap">       地图      </a>      <a  href="http://v.baIDu.com" name="tj_trvIDeo">       视频      </a>      <a  href="http://tIEba.baIDu.com" name="tj_trtIEba">       贴吧      </a>      <noscript>       <a  href="http://www.baIDu.com/bdorz/login.gif?login&amp;tpl=mn&amp;u=http%3A%2F%2Fwww.baIDu.com%2f%3fbdorz_come%3d1" name="tj_login">        登录       </a>      </noscript>      <script>       document.write('<a href="http://www.baIDu.com/bdorz/login.gif?login&tpl=mn&u='+ encodeURIComponent(window.location.href+ (window.location.search === "" ? "?" : "&")+ "bdorz_come=1")+ '" name="tj_login" >登录</a>');      </script>      <a  href="//www.baIDu.com/more/" name="tj_briicon" >       更多产品      </a>     </div>    </div>   </div>   <div ID="ftCon">    <div ID="ftConw">     <p ID="lh">      <a href="http://home.baIDu.com">       关于百度      </a>      <a href="http://ir.baIDu.com">       About BaIDu      </a>     </p>     <p ID="cp">      ©2017 BaIDu      <a href="http://www.baIDu.com/duty/">       使用百度前必读      </a>      <a  href="http://jianyi.baIDu.com/">       意见反馈      </a>      京ICP证030173号      <img src="//www.baIDu.com/img/gs.gif"/>     </p>    </div>   </div>  </div> </body></HTML>
@H_419_8@



这里我们要提取图片的链接,可以发现它们是在<img标签里面,src对应的就是链接。
接下来我们写代码,找到相应的图片链接

for link in soup.find_all("img"):    print(link.get("src"))
@H_419_8@

2.爬取天气
import requestsfrom bs4 import BeautifulSoupurl = "http://www.weather.com.cn/weather1d/101110101.sHTML"response = requests.get(url)response.enCoding = "utf-8"text = response.textprint(text)
@H_419_8@

3.完整代码@H_419_8@在Web前端的CSS语法中,通过CSS也可以定位元素的位置。在写CSS时,标记名不加任何修饰,类名前加点”.“,ID名前加#,在这里可以同类似的方法来筛选元素,用到的方法就是soup.select( ),返回类型是List。


粘贴下来如下:

#today > div.t > ul > li:nth-child(1) > p.tem > span
import requestsfrom bs4 import BeautifulSoupurl = "http://www.weather.com.cn/weather1d/101190101.sHTML"response = requests.get(url)response.enCoding = "utf-8"text = response.text# print(text)soup = BeautifulSoup(text,"lxml")weather_info = {"tem":None}weather = {"daytime":weather_info,"night":weather_info.copy()}# (数据在HTML标签中的层级关系)#today > div.t > ui > li:nth-child(1) > p.tem > spantemp = soup.select("#today > div.t > ul > li:nth-child(1) > p.tem > span")# print(temp)# 取出数字# print(temp[0].string)weather["daytime"]["tem"] = temp[0].string#print(weather)#today > div.t > ul > li:nth-child(2) > p.tem > spantemp = soup.select("#today > div.t > ul > li:nth-child(2) > p.tem > span")weather["night"]["tem"] = temp[0].stringprint(weather)
@H_419_8@

总结@H_419_8@本节主要讲解了Beautiful Soup解析HTML解析的各种方式,这也是提取网页数据非常关键的环节。也可以实现简单的爬虫,这些内容配合后面的正则表达式,可以达到事半功倍的效果。

总结

以上是内存溢出为你收集整理的python爬虫基础(二)---0基础也能看得懂全部内容,希望文章能够帮你解决python爬虫基础(二)---0基础也能看得懂所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1185394.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存