parsel类库使用

简介: parsel类库使用

一、parsel类库使用

parsel这个库可以解析HTML和XML,并支持使用Xpath和CSS选择器对内容进行提取和修改,同时还融合了正则表达式的提取功能。parsel灵活且强大,同时也是python最流行的爬虫框架Scrapy的底层支持

# coding=utf-8
"""
    作者:gaojs
    功能:
    新增功能:
    日期:2022/3/25 19:35
"""
import os.path
import requests
import parsel
def get_address():
    """
    获取url地址
    :return:
    """
    dirname = 'photo/'
    if not os.path.exists(dirname):
        os.mkdir(dirname)
    for page in range(2, 11):
        print(f'=====================正在爬取第{page}页内容========================')
        url = f'http://www.netbian.com/1920x1080/index_{page}.htm'
        # url = 'http://www.netbian.com/1920x1080/'
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.46'
        }
        res = requests.get(url, headers=headers)
        res.encoding = res.apparent_encoding
        selector = parsel.Selector(res.text)
        href = selector.css('.list li a::attr(href)').getall()
        # <img src="http://img.netbian.com/file/2022/0326/small003835uYAUe1648226315.jpg" alt="绿色草地 美女刘亦菲2022年4月日历桌面壁纸护眼">
        url_lis = selector.css('.list li')
        for lis in url_lis:
            title = lis.css('b::text').get()
            # 取出广告页面
            if title:
                list_url = 'http://www.netbian.com' + lis.css('a::attr(href)').get()
                # print(list_url)
                res1 = requests.get(list_url, headers=headers)
                # print(res1.text)
                selector1 = parsel.Selector(res1.text)
                img_url = selector1.css('.pic img::attr(src)').get()
                # print(img_url)
                # 保存图片
                img_content = requests.get(url=img_url).content
                with open('photo/' + title + '.jpg', 'wb') as f:
                    f.write(img_content)
                    print(title, img_url)
get_address()
相关文章
|
4月前
|
安全 Java 关系型数据库
Java核心类库
Java核心类库
58 1
|
6月前
|
存储 算法 安全
Java常用类库与技巧
Java常用类库与技巧
40 0
|
Java API Apache
好用的Java工具类库大总结,提升开发效率必备
好用的Java工具类库大总结,提升开发效率必备
|
C# C++
C# 创建与引用dll类库项目实战
本文目录 1. 类的访问修饰符 2. 新建类库项目 3. 编辑类代码 4. 编译并生成dll文件 5. 调用该dll
306 0
C# 创建与引用dll类库项目实战
|
Java ice
使用案例回顾类库相关知识(下) | 带你学《Java语言高级特性》之四十五
回顾之前学习的类库相关知识,我们已经对其基本概念与简单使用有了一个较为全面的了解,现在让我们一起来结合具体的一些案例巩固一下程序国际化和比较器的相关内容吧。
使用案例回顾类库相关知识(上) | 带你学《Java语言高级特性》之四十三
回顾之前学习的类库相关知识,我们已经对其基本概念与简单使用有了一个较为全面的了解,现在让我们一起来结合具体的一些案例巩固一下StringBuffer类和Random类的相关内容吧。
|
存储 索引 程序员
|
测试技术 C# Windows
C#创建dll类库
类库让我们的代码可复用,我们只需要在类库中声明变量一次,就能在接下来的过程中无数次地使用,而无需在每次使用前都要声明它。这样一来,就节省了我们的内存空间。而想要在类库添加什么类,还需取决于类库要实现哪些功能。
932 0
|
API PHP
ThinkPHP 3.2公共类库、应用类库ThinkPHP/Library讲解
一、ThinkPHP的类库主要包括公共类库和应用类库,都是基于命名空间进行定义和扩展的。只要按照规范定义,都可以实现自动加载。        公共类库公共类库通常是指ThinkPHP/Library目录下面的类库,例如:            Think目录:系统核心类库            Org目录:第三方公共类库        这些目录下面的类库都可以自动加载,你只要把相应的类库放入目录中,然后添加或者修改命名空间定义。
1284 0
|
Java 编译器 C++
应用的代码没有用新的类库来进行编译(转)
一个一直运行正常的应用突然无法运行了。在类库被更新之后,返回下面的错误。 Exception in thread "main" java.lang.NoSuchMethodError: com.nhn.user.UserAdmin.addUser(Ljava/lang/String;)V       at com.nhn.service.UserService.add(UserService.java:14)       at com.nhn.service.UserService.main(UserService.java:19)  应用的代码如下,而且它没有被改动过。
802 0