parsel的使用(Xpath/Css选择器)***有基础的,仅限于快速应用

parsel的使用(Xpath/Css选择器)

1. parsel介绍

pasel的优势

  1. pasel支持Xpath和Css选择器对内容进行提取和修改
  2. 支持正则表达式的提取功能
  3. 是python最流行的爬虫框架Scrapy的底层支持

1.1 Xpath的基本使用

先安装

pip install lxml

豆瓣电影 Top 250 (douban.com)网页为例

我们想通过xpath选取"肖申克的救赎"这几个字-----f12

请添加图片描述

请添加图片描述

复制他的Xpath路径

import requests
from lxml import etree


headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.64'
}
req = requests.get("https://movie.douban.com/top250", headers=headers)
print(req.status_code)
html = etree.HTML(req.text)
results = html.xpath('//*[@id="content"]/div/div[1]/ol/li')
for result in results:
    text = result.xpath('div/div[2]/div/a/span[1]/text()')
    print(text)

注意:这里需要有些基础的人才能看懂

代码里复制xpath的路径直接使用只能找到单个,如果要进行同类型数据去筛选,就要选择在什么地方进行断点,这里的原始的xpath路径为//*[@id=“content”]/div/div[1]/ol/li[1]/div/div[2]/div[1]/a/span[1]

我们在li处进行转折,生成可迭代的列表,然后再选取

1.2 Css选择器的使用

这里我们只讲在parsel中的使用,因为具体内容比较繁琐,有需要的可以去进行深入学习,我直接讲应用了

2. parsel的安装以及使用

pip install parsel

导入

from parsel import Selector

通过这个可以使用选择器功能

from parsel import Selector

html = '''
<div>
    <ul>
         <li class="item-0">first item</li>
         <li class="item-1"><a href="link2.html">second item</a></li>
         <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
         <li class="item-1 active"><a href="link4.html">fourth item</a></li>
         <li class="item-0"><a href="link5.html">fifth item</a></li>
     </ul>
 </div>
'''

selector = Selector(text=html)
# 类class选择器
items = selector.css('.item-0')
print(len(items), type(items), items)
items2 = selector.xpath('//li[contains(@class, "item-0")]')
print(len(items2), type(items), items2)

还是对豆瓣top250进行爬取

请添加图片描述

这里选择的是selector路径

import requests
from parsel import Selector

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.64'
}
req = requests.get("https://movie.douban.com/top250", headers=headers)
html=req.text
selector = Selector(text=html)
results=selector.css('#content > div > div.article > ol > li')
for result in results:
    text=result.css('div > div.info > div.hd > a > span:nth-child(1)::text')

    print(text.get())
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值