学习pyquery----一

任务概述:pa取某网页下的清晰大图,清晰大图需要从小图预览中获取链接,再进入详情页获取清晰大图的url并抓取下载。

逻辑:先获取预览页面的小图预览的html,爬取进去详情页的url,设置遍历函数,使用request再次请求,获取进去详情页的url,再次爬取页面的html,再次设置一次遍历函数,然后使用pq爬取所需要的大图并使用os保存到本地目录。

1、库import,这里需要三个库

import os
import requests
from pyquery import PyQuery as pq

其中,os是一个用于与操作系统交互的标准库,它提供了一些常用的功能来管理文件和目录,执行系统命令以及访问环境变量等。在本次主要使用os.mkdir()函数创建用于存储爬取文件的文件夹。

在 Python 中,requests 是一个常用的第三方库,用于发送 HTTP 请求。

pyquery 是一个用于解析和处理 HTML/XML 文档的 Python 库。它提供了类似于 jQuery 的语法和 API,使得在 Python 中处理 HTML/XML 文档变得更加方便和简洁。其中pyquery筛选html的一些属性会在下文提及,现在暂时不表。

2、先获取预览页面的小图预览的html,爬取进去详情页的url

def xiao():
    url = "https://s网站...."
    headers = {
        'User-Agent': '自己的爬虫头'
    }
    r = requests.get(url, headers=headers).content
    ret = pq(r)
    dev_list = ret('.bot-div').find('a').items()  # 获取目标页面class = bot-div属性下的a标签 其中.items表示枚举以下相同标签下的a

3、设置遍历函数,使用request再次请求,获取进去详情页的url,再次爬取页面的html,

    for dev in dev_list:
        name = dev.text()  # 获取名字
        # print(name)
        img_down = 'https://sc.chinaz.com' + dev.attr('href')  # 获取大图url
        # print(img_down)
        img_down1 = requests.get(img_down, headers=headers).content
        ret1 = pq(img_down1)
        dev_list_big = ret1('.img-box').find('img').items()

4、再次设置一次遍历函数,然后使用pq爬取所需要的大图并使用os保存到本地目录。

 for img in dev_list_big:
            img = 'https:' + img.attr('src')
            downlown = requests.get(img, headers=headers).content
            # 存储
            with open(f'大照片/{name}.jpg', 'wb') as f:
                f.write(downlown)

5、main函数


if __name__ == '__main__':
    xiao()
    if not os.path.exists('大照片'):
        os.mkdir('大照片')

其中,关于本文中pyquery库方法的使用,

ret1('.img-box').find('img').items()

#。imgbox 查找class=img-box属性的div标签
#.find('img' ) 查找该标签下的img内容
#.在 pyquery 中,items() 方法用于返回 PyQuery 对象中所有匹配元素的生成器。通过迭代生成器,可以遍历 PyQuery 对象中的每个匹配元素,并对其进行操作。

其中,关于

在 pyquery 中,可以使用类选择器来选择具有指定类名的元素。类选择器使用 . 后跟类名的形式进行选择。

find()在pyquery 中,find() 方法用于查找符合选择器的所有后代元素。它会在当前 PyQuery 对象中查找满足指定选择器条件的所有元素,并返回一个新的 PyQuery 对象。

items()在 pyquery 中,items() 方法用于返回 PyQuery 对象中所有匹配元素的生成器。通过迭代生成器,可以遍历 PyQuery 对象中的每个匹配元素,并对其进行操作。

ID 选择器:使用 # 后跟 ID 名称选择元素。示例代码:

from pyquery import PyQuery

html = '''
<html>
<body>
    <div id="container1">
        <h1>Title 1</h1>
        <p>Paragraph 1</p>
    </div>
    <div id="container2">
        <h1>Title 2</h1>
        <p>Paragraph 2</p>
    </div>
</body>
</html>
'''

doc = PyQuery(html)
container = doc('#container1')
print(container.text())
  1. 属性选择器:使用属性名称和值选择具有指定属性的元素。示例代码:
from pyquery import PyQuery

html = '''
<html>
<body>
    <div class="container">
        <h1>Title 1</h1>
        <p>Paragraph 1</p>
    </div>
    <div class="container">
        <h1>Title 2</h1>
        <p>Paragraph 2</p>
    </div>
</body>
</html>
'''

doc = PyQuery(html)
containers = doc('[class="container"]')
print(containers.text())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值