nameregex=re.compile('alt="(.*?)"\n') name=nameregex.findall(html) arearegex=re.compile('([0-9.]+)㎡\n') area = arearegex.findall(html)#找出面积 priceregex=recompile('<em>([0-9.])+)'</em>元/月') price= priceregex.findall(html)哪里错了
时间: 2024-03-09 19:51:02 浏览: 114
代码中的第三行、第五行和第七行中的正则表达式中都存在括号不匹配的问题。
在第三行代码中,正则表达式中的`\n`应该去掉。
在第五行代码中,正则表达式中的`[0-9.]`应该改为`[0-9\.]+`。
在第七行代码中,正则表达式中的`([0-9.])+`应该改为`([0-9\.]+)`,并且正则表达式中的`</em>`前后的括号应该匹配。
修改后的代码如下:
```python
nameregex = re.compile('alt="(.*?)"')
name = nameregex.findall(html)
arearegex = re.compile('([0-9.]+)㎡')
area = arearegex.findall(html) # 找出面积
priceregex = re.compile('<em>([0-9\.]+)</em>元/月')
price = priceregex.findall(html)
```
相关问题
# -*-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'`错误。
阅读全文