Python

本文介绍了如何在Django项目中使用命令行查看结构,以及Python爬虫中的基础知识,包括venv的使用、网络数据采集步骤、类和装饰器概念、Flask中的app.route装饰器,正则表达式的匹配和预加载,以及XPath在HTML解析中的应用。还通过豆瓣TOP250的例子展示了如何运用这些技术获取网页数据。
摘要由CSDN通过智能技术生成

项目结构

在命令行中显示Django项目结构,可以使用tree命令(Windows)或tree命令(Linux/Mac)

  1. 打开命令行(Windows)或终端(Linux/Mac)。

  2. 使用cd命令切换到Django项目的根目录。例如:

     
    cd /path/to/your/django/project
  3. 在命令行中输入以下命令,然后按回车键:

    • Windows:

       
      tree /f
    • Linux/Mac:

       
      tree -a

    这将显示Django项目的目录结构,包括文件和子目录。

  4. 如果你想将项目结构保存到文本文件中,可以将输出重定向到一个文件。例如:

    • Windows:

       
      tree /f > project_structure.txt
    • Linux/Mac:

       
      tree -a > project_structure.txt

    这将把项目结构输出到名为project_structure.txt的文件中。你可以使用文本编辑器查看该文件。

输出数组与字典

数组:

爬虫基础知识

venv:记录虚拟环境

网络爬虫,其实叫作网络数据采集更容易理解。
就是通过编程向网络服务器请求数据(HTML表单),然后解析HTML,提取出自己想要的数据。
归纳为四大步:

1.根据url获取HTML数据
2.解析HTML,获取目标信息
3.存储数据
4.重复第一步

py的类:类是模板,而实例则是根据类创建的对象
创建类时,类方法中的self是什么?
self 代表类的实例,是通过类创建的实例
(注意,在定义类时这个实例我们还没有创建,它表示的我们使用类时创建的那个实例)

在Python中,只要是带着@的,基本上就是装饰器,装饰器的本质是扩展原本函数功能的一种函数
app.route('URL')就是在Flask框架中非常重要的一个装饰器,它的作用是在程序运行时,装饰一个视图函数,用给定的URL规则和选项注册它,
这里不理解也无所谓,能用即可

正则表达式

pycharm使用:通过引用re模块即可。

常用正则表达:

obj = re.compile(r".*?") #惰性匹配
# re.findall拿到所有数据
result = re.findall(r"填写pattern","填写string")
print(result)

# re.search拿到第一个数据
result = re.search(r"\d+","肌肤的司法100,滑稽的是8那时的")
print(result.group())

# re.finditer把所有结果放到迭代器
result = re.finditer(r"\d+","肌肤的司法100,滑稽的是8那时的")
for item in result:
    print(item.group())


#result和result.group()为了应对不同的返回结果,如果返回结果包含数据,那么通过result.group()可以得到结果里的数据

正则表达预加载:

obj = re.compile(r"pattern")

result = obj.search("填入数据")
result = obj.findall("填入数据")
result = obj.finditer("填入数据")

正则表达式分组:

obj = re.compile(r'<div class="card-body"><a href="(?P<url>.*?)">(?P<company>.*?)</a></div>')
result = obj.finditer(string)
for item in result:
    print(item.groupdict())

(?P<组名>pattern),其中(?P<组名> )表示给正则表达式分组。

小案例:豆瓣TOP250

import requests

url = "https://movie.douban.com/top250"
head = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                      'Chrome/122.0.0.0 Safari/537.36'}
response = requests.get(url,headers=head)
response.encoding = 'utf-8'
print(response.text)

obj = re.compile(r'<div class="item">(.+?)<span class="title">')
result = obj.finditer(response)

XPath

安装:pip install lxml

常见操作:

from lxml import etree
# 打开文件
file = open("test.html",mode="r",encoding="utf-8")
source = file.read()

# xpath使用
element = etree.HTML(source)

# 操作:找标签
result = element.xpath("/html/body")
# 文本:text()
result = element.xpath("/html/body/text()")
# 通配符:*,表示任意位置
result = element.xpath("/html/body/*/a/@href")
# 找属性,类,使用:@属性
result = element.xpath("/html/body/div/a/@href")
# 任意位置://
result = element.xpath("//a/@href")
# 属性的限定:[@class='title']
result = element.xpath("/html/body/div/a/span[@class='title']/text()")
#输出结果
print(result)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值