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命令有多种作用,以下是其中几个实际案例:
- 简单的页面请求
使用Scrapy shell命令可以简单地请求一个页面并查看返回内容,例如:
scrapy shell https://www.example.com
这将打开一个交互式Python shell并请求www.example.com页面的内容,你可以在shell中查看响应内容。
- 调试页面解析器
使用Scrapy shell命令可以快速检查和测试页面解析器是否正常工作。例如,在典型情况下,可以使用以下命令来尝试在“my_spider”中解析某个特定的URL:
scrapy shell http://www.example.com/some/page
fetch("//title/text()").extract()
这将提供您在Scrapy的解析器中测试“fetch”和“extract”功能的机会,并确保它们按预期工作。
- 查找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引擎。