|
1鱼币
本帖最后由 忄亙 于 2024-4-20 01:58 编辑
res = requests.get(url,headers=wz)
from bs4 import BeautifulSoup
soup = BeautifulSoup(res.text,'lxml')
lis = soup.find_all('li',class_='col-4')
for li in lis:
a = li.find_all('a')
地址 = a.get('href')
标题 = a.text
AttributeError: ResultSet object has no attribute 'get'. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?
你这里报错是因为:find_all('a') 返回的是列表(ResultSet),但你后面把它当成单个标签来用 (a.get(...) / a.text)。
只取每个 <li> 里的第一个链接:
- import requests
- from bs4 import BeautifulSoup
- from urllib.parse import urljoin
- res = requests.get(url, headers=wz, timeout=10)
- res.raise_for_status()
- soup = BeautifulSoup(res.text, 'lxml')
- lis = soup.find_all('li', class_='col-4')
- data = []
- for li in lis:
- a = li.find('a', href=True) # 用 find() 返回单个元素
- if not a:
- continue
- 地址 = urljoin(url, a['href']) # 兼容相对链接
- 标题 = a.get_text(strip=True)
- data.append({'标题': 标题, '地址': 地址})
- print(data)
复制代码
|
最佳答案
查看完整内容
你这里报错是因为:find_all('a') 返回的是列表(ResultSet),但你后面把它当成单个标签来用 (a.get(...) / a.text)。
只取每个 里的第一个链接:
|