赞
踩
大数据时代的到来,数据量暴增,导致传统的搜索引擎中附带大量无关信息。因此爬虫技术出现了!那么本文我将对几种不同网页结构,并结合自己想要获取的信息提出以下几种不同的方法:
1. select()
首先介绍一下BeautifulSoup库,它是可以在HTML中提取数据的Python库,通过对HTML文档进行解析,它可以按照我们对数据的偏好获取想要的数据。那么select方法正是BeautifulSoup库中一个重要的方法,select方法对BeautifulSoup解析后的HTML文档进行处理,通过对不同标签的不同属性进行选择,从而得到我们想要的数据,话不多说,直接上代码,我们将对新浪新闻的新闻标题信息进行获取。
我们可以看出,想要获取的新闻标题在标签a中,并且标签a在标签h2中,但我们可以发现h2标签中没有可以标识它的属性,而最外层div中含有可以标识它的属性class,因此我们通过select方法对class标签进行选择,代码如下:
补充:对于不同css,select方法有不同的方式,当为class时,需在前边加上" . ",而对id属性时,需在前面加上" # "。
这样我们就可以获得div中全部的HTML文档了,在将获取的list通过[0]解开,对解开的list进行取文本操作,就可以得到数据了,但我们想要的是标题信息,而标题在h2中,因此还需将news通过select方法获取h2标签,代码如下:
此时我们可以成功的打印出新闻的标题信息啦。
2.用lxml库xpath爬取知网相关内容:
首先我们需要引入的模块是requests,lxml
import requests
from lxml import html,如果您没有该模块,我们需要在cmd下pip,( pip install lxml 与 pip install requests 命令来安装这两个模块)
requests.get(url)获得该网页的数据信息,通过使用 html 模块解析它,并将结果保存到 tree 中
tree 现在包含了整个HTML文件到一个树结构中,我们可以使用XPath去获取到我们想要的数据。
已知网为例子我们获取该网页业的标题和摘要部分。
获取到标题和摘要我们需要写入正确的xpath,打开该网页鼠标右键检查元素我们选取我们想要的对应信息,分析该内容在html内的结构一层一层去写,例如标题:该标题是在<div class="wxTitle"><h2 class="title">标题名称</h2></div>对应的xpath:'//h2[@class="wxTitle"]/text()'//h2是选取所有 h2子元素,并且属性class的值为wxTitle的text()内容部分。
xpath具体细节请登陆:http://www.w3school.com.cn/xpath/xpath_syntax.asp 除此之丸有一种简单的办法有很多工具可以获取元素的XPath,如Firefox的FireBug或者Chrome的Inspector,如果你使用Chrome,你可以右键元素,选择 ‘Inspect element',高亮这段代码, 再次右击,并选择 ‘Copy XPath'。
最后print(title),输出结果如图(本文如有侵权雷同纯属巧合谢谢观看)
代码:
import requests
from lxml import html
res = requests.get("http://kns.cnki.net/kcms/detail/detail.aspx?dbcode=CJFD&filename=DZXU201201002&dbname=CJFD2012")
tree = html.fromstring(res.text)
title = tree.xpath('//h2[@class="title"]/text()')
print(title)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。