当前位置:   article > 正文

Python网络编程(五)-利用requests和BeautifulSoup进行网络数据抓取和解析_使用python中的requests库、beautifulsoup库等第三方库对网页评论进行抓取

使用python中的requests库、beautifulsoup库等第三方库对网页评论进行抓取

1. BeautifulSoup简介:

在介绍了urllib,urllib3,requests等数据爬取相关的python库后,今天,再介绍一个更为流行的网页数据爬虫库,BeautifulSoup。

BeautifulSoup是有一个非常流行的python库,最主要的功能是从网页抓取数据。
BeautifulSoup可以对抓取的网页中的数据进行分析。BeautifulSoup自动将输入文档转换为Unicode编码,输出文档转换为 utf-8 编码。你几乎不需要考虑编码方式,当然,你也可以指定编码方式。
BeautifulSoup和requests、lxml、html6lib结合,更可以打造强大的数据爬取和解析利器。

2. BeautifulSoup实践:

例子:利用BeautifulSoup和requests对网页进行分析,获取网址和名称。

  1. #获取网站网址和名称,以http://news.163.com/photo/#Current为例。
  2. #http://news.163.com/photo/#Current是网易图片的网站
  3. import requests
  4. from bs4 import BeautifulSoup as bs
  5. #获取网页内容
  6. def get_web_content(url):
  7. print(url)
  8. res = requests.get(url) #发送请求
  9. #print(res.encoding) #查看网页编码的
  10. #res.encoding = 'utf-8' #跟上一个(res.encoding)结合来用,如果编码有乱码,则可以通过这个定义编码来改变
  11. html = res.text
  12. #print(html)
  13. item_list = []
  14. soup = bs(html,"html.parser") #定义一个BeautifulSoup变量
  15. #items = soup.find_all('div',attrs={'class':'nav-mod-1'}) #span
  16. items = soup.find_all('a',attrs={'class':'ntes-nav-index-title ntes-nav-entry-wide c-fl'})
  17. #print(items)
  18. for item in items:
  19. href=item.get('href')
  20. title=item.get('title')
  21. #print(item)
  22. print("网址:" + href)
  23. print("名称:" + title)
  24. item_list.append(href)
  25. print('列表数量:%d' % len(item_list))
  26. #main
  27. if __name__ == '__main__':
  28. #url = 'https://news.sina.com.cn/'
  29. url = 'http://news.163.com/photo/#Current' #网易图片网址
  30. get_web_content(url)

代码说明:

soup  = bs(html,"html.parser")     #定义一个BeautifulSoup变量

items = soup.find_all('a',attrs={'class':'ntes-nav-index-title ntes-nav-entry-wide c-fl'})  #获取属性class的值为“ntes-nav-index-title ntes-nav-entry-wide c-fl”的内容,

然后,可以进一步解析。

运行结果:

aaaaa:chaper user1$ python test_soup.py 

http://news.163.com/photo/#Current

网址:https://www.163.com/

名称:网易首页

列表数量:1

原网站内容:

http://news.163.com/photo/#Current,是网易图片网站,html内容(截取部分)如下:

<div class="ntes-nav" id="js_N_nav">
    <div class="ntes-nav-main clearfix">
            <div class="c-fl">
        <a class="ntes-nav-index-title ntes-nav-entry-wide c-fl" href="https://www.163.com/" title="网易首页">网易首页</a>
        <!-- 应用 -->
        <div class="js_N_navSelect ntes-nav-select ntes-nav-select-wide ntes-nav-app  c-fl">
          <a href="http://www.163.com/#f=topnav" class="ntes-nav-select-title ntes-nav-entry-bgblack JS_NTES_LOG_FE">应用
            <em class="ntes-nav-select-arr"></em>
          </a>

其中,ntes-nav-index-title ntes-nav-entry-wide c-fl就是class属性的一个值,可以认为是key。


不要吊坠在一棵树上,换个组件实现一下。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/616465
推荐阅读
相关标签
  

闽ICP备14008679号