第9课、解析网页中的元素-四周学会爬虫系统

目标:爬取本地网页中,评分大于3的文章,并打印出来

准备:

  1. 安装Python3.0。
  2. 安装PyCharm,用于开发Python的集成环境。
  3. 安装BeautifulSoup库,学习爬虫需要的库。

BeautifulSoup:是一个可以从HTML和XML中读取数据的库。库也叫模块,在笨办法学Python中叫做特征,是其他程序员开发好的一些代码,可以拿来导入(import),然后调用。开发之前最好先学习一下Python的基本知识,《笨办法学python》或者是《编程小白的第一本python》都是不错的选择。

思路:

  1. 使用BeautifulSoup解析本地网页
  2. 获取所需的信息标签
  3. 精简获取的信息

代码:

 1 from bs4 import BeautifulSoup
 2 # BeautifulSoup从HTML和XML中读取数据的库
 3
 4 info = []
 5 # 定义一个名为info的列表
 6
 7 with open(‘/Users/my/Desktop/lesson9/new_index.html‘,‘r‘) as wb_data:
 8     Soup = BeautifulSoup(wb_data,‘lxml‘)
 9 # 在开发的过程中,许多对象在使用后,都会执行一条或者多条语句来关闭,释放等操作,这样累赘的操作就会让人忘记,with语句就可以解决这些问题。
10 # 将文件以wb_data的名字打开
11 # 打开之后再用beautifulSoup解析网页
12
13 # 粗略的获取需要信息的标签
14 # 依次是图像、标题、描述、标签、评分
15     images = Soup.select(‘body > div.main-content > ul > li > img‘)
16     titles = Soup.select(‘body > div.main-content > ul > li > div.article-info > h3 > a‘)
17     descs = Soup.select(‘body > div.main-content > ul > li > div.article-info > p.description‘)
18     rates = Soup.select(‘body > div.main-content > ul > li > div.rate > span‘)
19     cates = Soup.select(‘body > div.main-content > ul > li > div.article-info > p.meta-info‘)
20 #   print(images,titles,descs,rates,cates,sep=‘\n---------------------------------\n‘)
21
22 # 精简获取的信息,留下自己有用的东西
23 # for循环可以遍历任何序列的项目
24 for title,image,desc,rate,cate in zip(titles,images,descs,rates,cates):
25     data = {
26         ‘title‘: title.get_text(),      # get_text()去除html标签,获得文本信息。
27         ‘rate‘: rate.get_text(),
28         ‘desc‘: desc.get_text(),
29         ‘cate‘: list(cate.stripped_strings),        # stripped_strings获得一个父级标签下所有子标签的文本信息
30         ‘image‘: image.get(‘src‘),      # get()获得某个标签的属性
31     }
32     info.append(data)   #append在列表末尾添加新的对象
33
34 # 打印评分大于3的文章
35 for i in info:
36     if float(i[‘rate‘]) >3:
37         print(i[‘title‘],i[‘cate‘],i[‘rate‘])

遇到问题:
1. 安装BeautifulSoup库时,PyCharm提示Error错误

原因:教程中使用的是Python2,而自己机子使用的是Python3,要想安装BeautifulSoup,需要搜索bs4。具体步骤:打开PyChram,在File中找到Setting,搜索project Interpreter。然后在右侧点击“+”,搜索bs4,安装就可以看到BeautifuSoup库。

2. 输入的错误,在输入的时候多了一个空格或者少了一个空格而报错。

如在:

rates = Soup.select(‘body > div.main-content > ul > li > div.rate > span‘)

之前加了一个空格就会报错。变成了(rate前面有一个空格)

 rates = Soup.select(‘body > div.main-content > ul > li > div.rate > span‘)

需要仔细检查,严格按照格式书写。

#s3gt_translate_tooltip_mini { display: none !important }
#s3gt_translate_tooltip_mini { display: none !important }
#s3gt_translate_tooltip_mini { display: none !important }
#s3gt_translate_tooltip_mini { display: none !important }

原文地址:https://www.cnblogs.com/wall9527/p/9866122.html

时间: 2024-08-30 03:08:41

第9课、解析网页中的元素-四周学会爬虫系统的相关文章

给网页中的元素添加onclick事件(引自锋利的jQuery)

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta name="generator" content="editplus" /> <title>给网页中的元素添加onclick事件</p></title> <script src="jquery-1.7.1

JS获取网页中HTML元素的几种方法分析

getElementById getElementsByName getElementsByTagName 大概介绍 getElementById ,getElementsByName ,getElementsByTagName ###adv### 后两个是得到集合,byid只是得到单个对象 getElementById 的用法 举个例子: <a id="link1" name="link1" href=http://homepage.yesky.com>

C#获取网页中某个元素的位置,并模拟点击

我们在开发中,往往要得到网页中某个元素的位置,并且点击它.要模拟一次鼠标点击并不难,只要调用一个API就行了,关键就是怎么样得到这个元素的位置,还有判断是否要滚动滚动条,要滚动多少行能让元素显示出来.当然我们可以动态改变它的CSS,让它在特定的位置显示出来,但这个方法只对比较简单的网页有效. 那我们怎么才能得到网页的位置呢,首先我们来看一张图片 从这里我们可以看到五个offset的属性,这里我们主要利用offsetparent, offsetleft 和offsettop,我们用offsetpa

网页中DOM元素转换成图片

利用html2canvas.js将网页中dom元素转换成图片,html2canvas.js的链接是:http://html2canvas.hertzen.com/ 实现效果demo的代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>网页转图片</title> <style> #img

二 解析网页中元素

一 使用beautifulSoup 解析网页 Soup = BeantifulSoup(html,'lxml') 二 描述需要爬取的东西在哪? = Soup.select('???') 三 从标签中获得你要的信息 <p>Something</p> 去掉标签,并放到数据容器中. title.get_text() > Something title.tripped_strings>获取title目录下,所有标签. python 可以做列表>list(title.tri

DOM应用---遍历网页中的元素

在我们编写的程序中,如果想要实现对浏览器打开的网页进行监视.模拟操纵.动态提取用户输入.动态修改......等功能,那么请你抽出宝贵的时间,继续往下阅读.本文介绍的知识和示例程序都是围绕如何遍历 HTML 中的表单(form)并枚举出表单域的属性为目标的,对于网页中的其它元素,比如图象.连接.脚本等等,应用同样的方法都可以轻松实现. 二.网页的文档层次结构 IE 浏览器,采用 DOM(文档对象模型)来管理网页的数据.它通过一个容器(IWebBrowser2/IHTMLWindow2)来装载网页文

深入解析React中的元素、组件、实例和节点

React 深入系列,深入讲解了React中的重点概念.特性和模式等,旨在帮助大家加深对React的理解,以及在项目中更加灵活地使用React. React 中的元素.组件.实例和节点,是React中关系密切的4个概念,也是很容易让React 初学者迷惑的4个概念.现在,我就来详细地介绍这4个概念,以及它们之间的联系和区别,满足喜欢咬文嚼字.刨根问底的同学的好奇心. 元素 (Element) React 元素其实就是一个简单JavaScript对象,一个React 元素和界面上的一部分DOM对应

Android中如何解析网页,获取网页中的元素内容

问题: 由于android的WebView等相关类没有提供解析html网页内容的接口,我们想要获取网页的内容并解析出我们想要的元素内容,用android的固有API是没办法了. 这里我提供两种解析html思路:第一种,使用第三方解析html库:第二种,使用JAVA与JS回调,通过JS解析html. 之前研究了一下htmlparser这个开源库,但是发现和android提供的库有冲突,但其在纯java应用程序下是可行的. htmlparser下载地址:http://htmlparser.sourc

Js---获取网页中HTML元素的几种分析方法

getElementById getElementsByName getElementsByTagName 大概介绍 getElementById ,getElementsByName ,getElementsByTagName 后两个是得到集合,byid只是得到单个对象 getElementById 的用法 举个例子: <a id="link1" name="link1" href=http://homepage.yesky.com>网页陶吧</