首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >盘点一个pyquery库选择器提取案例

盘点一个pyquery库选择器提取案例

作者头像
前端皮皮
发布2022-08-17 18:34:06
发布2022-08-17 18:34:06
2900
举报

大家好,我是皮皮。

一、前言

前几天在Python白银群有个叫【手中的流沙】的粉丝问了一道关于pyquery选择器提取的问题,如下图所示。

就像这样:

原网页的信息如下图所示:

实现过程

这里【甯同学】给了一份代码,如下所示:

代码语言:javascript
复制
from pyquery import PyQuery as pq


headers = {
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Cache-Control': 'max-age=0',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}
html = pq(url='https://www.cditv.cn/list-3894-1.html', headers=headers)
doc = pq(html)
li = doc('div.style-type3 > div:gt(0) > ul > li.item > ul > li.list-item').items()
for i in li:
    info = {
        'city': i.text().split('\n\n\n')
    }
    print(info)

代码运行之后,结果如下图所示:

确实一步到位了,很强!原来pq可以直接请求网页,确实也省事了。主要是那个css构造还是需要点时间和精力的。

这个地方也还可以使用xpath提取来实现,代码如下:

代码语言:javascript
复制
import requests
from lxml import etree

res = requests.get(url='https://www.cditv.cn/list-3894-1.html', headers=headers)
res.encoding = res.apparent_encoding
html = etree.HTML(res.text)
li_lists = html.xpath('/html/body/div[1]/div[2]/div[2]/div[2]/ul/li')
print(len(li_lists))
for li in li_lists:
    info = li.xpath('./ul//li//text()')
    # shi = li.xpath('./ul//li/h4/text()')
    # qu = li.xpath('./ul//li/strong/text()')
    # jiedao = li.xpath('./ul//li/br/text()')
    print(info)

运行之后,结果如下图所示:

当然了,你还可以使用re正则表达式bs4来提取,这个网页并不难,用来练手还是不错的。

三、总结

大家好,我是皮皮。这篇文章主要盘点一个pyquery库选择器提取案例!如果你还有其他方法,也欢迎大家积极尝试,一起学习,记得分享给我哦。

最后感谢粉丝【手中的流沙】提问,感谢【甯同学】、【dcpeng】在运行过程中给出的思路和代码建议,感谢粉丝【月神】、【庄大】等人参与学习交流。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python共享之家 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 实现过程
  • 三、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档