爬虫解析库

在爬取豆瓣电影中使用的是正则表达式,但是正则表达式比较麻烦,除了正则以外还有 LXML、BeautifulSoup、PyQuery 等多个解析库,这些解析库相比正则更为简便,能够有效提高爬虫的爬取效率。

XPATH

简介

定义

XPath,全称 XML Path Language,即 XML 路径语言,它是一门在XML文档中查找信息的语言。XPath 最初设计是用来搜寻XML文档的,但是它同样适用于 HTML 文档的搜索。

解析XML的一种语言(HTML其实是XML的子级),广泛应用于HTML的解析;
几乎所有的编程语言都支持XPath,包括JAVA和C 语言

所以在做爬虫时,我们完全可以使用 XPath 来做相应的信息抽取,本节我们来介绍一下 XPath 的基本用法。

优点

说道XPath是门语言,不得不说它所具备的优点: 
1) 可在XML中查找信息 
2) 支持HTML的查找 
3) 通过元素和属性进行导航

XPath常用规则

表达式描述
nodename 选取此节点的所有子节点
/ 从当前节点选取直接子节点
// 从当前节点选取子孙节点
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性

关于etree模块的介绍:https://blog.csdn.net/u012067766/article/details/79903455

 主要用法:

层级:/直接子级、//跳级
属性:@属性访问
函数:contains()、text()

实例

爬取搜狗首页上的文字

import requests
from lxml import etree
res=requests.get('https://www.sogou.com/')
elment=etree.HTML(res.text)
xpath_reg='//div[@class="top-nav"]//a/text()'
li='//div[@class="ft-info"]//a/text()'
results_1=elment.xpath(xpath_reg)
results_2=elment.xpath(li)
print(results_1)
print(results_2)

 BeautifulSoup

简介

BeautifulSoup 就是 Python 的一个 HTML 或 XML 的解析库,我们可以用它来方便地从网页中提取数据。

例子

爬取豆瓣书籍

from bs4 import BeautifulSoup
import requests

response=requests.get('https://book.douban.com/')
soup=BeautifulSoup(response.text,"html.parser")
items=soup.findAll('li')
for item in items:
    print(item.text)

糗事百科:

参考:https://www.jianshu.com/p/9c266216957b

from bs4 import BeautifulSoup
import requests
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'}
response=requests.get('https://www.qiushibaike.com/hot/',headers=headers)
soup=BeautifulSoup(response.text,"lxml")
items=soup.find_all(class_="article block untagged mb15 typs_hot")
for item in items:
    joke=item.span.get_text()
    print(joke.strip())
    print('----')

 PyQuery

 

posted @ 2019-05-21 18:12  舒畅123  阅读(240)  评论(0编辑  收藏  举报