parr = re.compile('src="(/u.*?)".alt="(.*?)"') # 匹配图片链接和图片名字,是什么意思
时间: 2023-06-14 12:04:31 浏览: 69
这段代码用正则表达式模块 `re` 创建了一个正则表达式对象 `parr`,该正则表达式用于匹配字符串中类似于 `src="/u/123456.jpg".alt="example"` 的文本。具体解释如下:
- `src="`:匹配字符串中以 `src="` 开头的部分。
- `(/u.*?)`:匹配任意字符,直到遇到下一个 `"`,这里使用了 `?` 表示非贪婪匹配,即尽可能少地匹配字符。
- `".alt="`:匹配中间的 `.alt="` 部分。
- `(.*?)`:同上,匹配任意字符直到下一个 `"`。
- `"`:匹配字符串中的 `"` 符号。
因此,这个正则表达式可以匹配类似于 `src="/u/123456.jpg".alt="example"` 的字符串,并将其中的 `/u/123456.jpg` 和 `example` 提取出来,方便后续处理。
相关问题
# -*-coding = utf-8-*- import requests import re import os url = 'https://pic.netbian.com/' headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.67' } requests = requests.get(url=url, headers=headers) requests = encoding = requests.apparent_encoding parr = re.compile('src="(/u.*?)".alt="(.*?)"') image = parr.findall(requests.text) path = '测试' if not os.path.isdir(path): os.mkdir(path) for i in image: link = i[0] # 获取链接 name = i[1] # 获取名字 with open(path + "/{}.jpg".format(name), "wb") as img: res = requests.get("https://pic.netbian.com/" + link) img.write(res.content) img.close() print(name+".jpg 获取成功....")
根据你提供的代码,问题出现在以下两行:
```python
requests = encoding = requests.apparent_encoding
image = parr.findall(requests.text)
```
解决这个问题的方法是修改变量名,因为你在代码中重复使用了`requests`变量,将其覆盖为字符串类型,而不是之前的`requests`库对象。
你可以将这两行代码修改为以下形式:
```python
response = requests.get(url=url, headers=headers)
text_content = response.text
image = parr.findall(text_content)
```
这样,你就创建了一个名为`response`的变量来存储请求的响应,然后使用`.text`属性获取响应的文本内容,并将其传递给`parr.findall()`函数进行匹配。
请记住,在修改代码之前,建议备份原始代码。完成修改后,你应该不再遇到`AttributeError: 'str' object has no attribute 'text'`错误。
const pArr = url?.split('?').shift()
在这段代码中,`pArr` 是一个变量,它的值是通过对 `url` 进行操作得到的。
首先,`url` 变量使用可选链操作符 `?.` 进行访问,确保在 `url` 为 `null` 或 `undefined` 的情况下不会出现错误。然后,使用 `split('?')` 方法将 `url` 字符串以问号 `?` 进行分割,返回一个数组。接着,使用 `shift()` 方法从数组中删除并返回第一个元素,即分割后的字符串的第一部分。最后,将这个值赋给变量 `pArr`。
需要注意的是,这段代码中使用了可选链操作符 `?.` 和数组方法 `split()`、`shift()`。可选链操作符用于确保在访问可能为 `null` 或 `undefined` 的属性或方法时不会引发错误。而 `split()` 方法用于将字符串分割成子字符串,并返回一个数组。`shift()` 方法用于删除并返回数组的第一个元素。
请注意,这段代码中缺少分号 `;`,可能会导致语法错误。如果你要使用这段代码,请确保在适当的位置添加分号。
如果你有一个具体的 `url` 字符串,并希望得到 `pArr` 的值,请提供更多的上下文信息,以便我可以为你提供更准确的帮助。