Python爬虫——几种不同网页结构爬虫简介

     大数据时代的到来,数据量暴增,导致传统的搜索引擎中附带大量无关信息。因此爬虫技术出现了!那么本文我将对几种不同网页结构,并结合自己想要获取的信息提出以下几种不同的方法:

    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)

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

带鱼工作室

感谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值