python笔记-介绍、命令、语法

python包

python包用于管理python模块,将一批模块归为一类,方便使用
从物理上看,包就是一个文件夹,文件夹中必须包含一个__init__.py文件,该文件夹可用于包含多个模块文件;
从逻辑上看,包的本质依然是模块

导入包

import 包名.模块名
from 包名 import 模块名
from 包名.模块名 import 模块成员

安装第三方包

pie install 包名

使用国内镜像快速安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy

命令

安装依赖包:

pip install xxx[==版本号]

根据依赖项清单安装依赖包:

pip install -r requirements.txt

查看依赖包:

pip list
或
pip freeze

生成依赖项清单:

pip freeze > requirements.txt

Scrapy shell命令

Scrapy shell命令有多种作用,以下是其中几个实际案例:

  1. 简单的页面请求

使用Scrapy shell命令可以简单地请求一个页面并查看返回内容,例如:

scrapy shell https://www.example.com

这将打开一个交互式Python shell并请求www.example.com页面的内容,你可以在shell中查看响应内容。

  1. 调试页面解析器

使用Scrapy shell命令可以快速检查和测试页面解析器是否正常工作。例如,在典型情况下,可以使用以下命令来尝试在“my_spider”中解析某个特定的URL:

scrapy shell http://www.example.com/some/page
fetch("//title/text()").extract()

这将提供您在Scrapy的解析器中测试“fetch”和“extract”功能的机会,并确保它们按预期工作。

  1. 查找CSS和XPath选择器

Scrapy shell可以用来查找CSS和XPath选择器,这在查找元素时非常有用。例如,您可以使用以下命令来查找一个标题选择器:

scrapy shell http://www.example.com
response.css('h1::text').extract_first()

这将返回页面中第一个“h1”元素的文本。

语法

函数说明

def func(x,y):
    """
    函数说明
    :param x: 形参x说明
    :param y: 形参y说明
    :return: 返回值说明
    """

导入模块

import time
from time import sleep
from time import *
from time import localtime as lt

模块变量:name

外部模块import不执行,只有在当前模块中run才会执行

if __name__ == '__main__':
    showHello('main')

模块变量:all

当模块中声明了__all__变量,import *只会导入__all__中定义的元素

from util import *

__all__ = ['test_A']
def test_A():
    print('testA')
def test_B():
    print('testB')

类、对象

class User:
    # 定义私有成员
    __privateVal = None  
    def __init__(self,id,name,age):
        self.id=id
        self.name=name
        self.age=age
    def sayHello(self):
        print(f'hello, i\'m {self.name}')
    #定义私有方法
    def __privateFunc(self):
        print('private func')

u1 = User(1,'zhangsan',10)
u2 = User(2,'lisi',12)
u1.sayHello();

魔术方法

init:构造函数
str:输出对象,相当于重写ToString

def __str__(self):
    return f'name:{self.name},age:{self.age}'

lt:对象比较,重写后支持对象间>、<操作符比较

def __lt__(self,other):
    return self.age < other.age

le:对象比较,重写后支持对象间>=、<=操作符比较
eq:对象比较,相当于重写Equals,重写后支持对象间==操作符比较

scrapy安装

pip install scrapy
scrapy startproject scrapyDemo
进入文件夹 spiders,创建蜘蛛
scrapy genspider douban movie.douban.com

正则

re模块三个主要方法:match、search、findall

import re

s = 'python_123_desc_index'
# match:从头匹配
result = re.match('python_\\d+',s)
if result:
    print(result.group())  # 匹配的值

# search:从前往后找到第一个就停止
result = re.search('\\d+_desc_index',s)
if result:
    print(result.group())  # 匹配的值

# findall:找出全部匹配项
result = re.findall('\\d+_desc_index',s)
if result:
    print(result)  # 匹配的值

Rule的用法

Scrapy框架中的Rule是用于指定页面中要提取的链接(即要访问和处理的页面),以及该链接匹配到的链接应如何处理的规则。

具体来说,Rule包含以下内容:

link_extractor:指定该规则要处理的链接的类型和规则,例如使用正则表达式,CSS选择器等来匹配链接。可以使用Scrapy内置的LinkExtractor对象来创建链接提取器。

callback:指定链接被提取后要执行的回调函数。例如,链接可能需要被发送到另一个Spider进行处理,或者需要调用另一个函数来提取页面上的数据。

follow:指定链接是否需要被跟踪。如果设置为True,则Scrapy会访问该链接,从而在该链接返回的页面中提取更多的链接并继续处理。

下面是一个示例,使用Rule规则从电影网站获取电影标题和海报图像链接:

import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
 
 
class MySpider(CrawlSpider):
    name = 'myspider'
    allowed_domains = ['example.com']
    start_urls = ['http://example.com']
 
    rules = [
        Rule(LinkExtractor(allow=(r'/movie/.+')), callback='parse_movie_page'),
    ]
 
    def parse_movie_page(self, response):
        title = response.css('h1::text').get()
        image_url = response.css('.movie-poster img::attr(src)').get()
 
        yield {
            'title': title,
            'image_url': image_url
        }

在上面的示例中,规则指定了LinkExtractor来提取以'/movie/'开头的链接,然后将其发送到回调函数parse_movie_page进行处理。在处理该页面时,使用CSS选择器来提取电影标题和海报图像链接,最后将它们封装成一个Python字典,并通过Scrapy的yield语句传递给Scrapy引擎。

posted @ 2023-04-22 23:07  .Neterr  阅读(33)  评论(0编辑  收藏  举报