这段代码报的错for tag_li in soup.find_all('li'):
时间: 2023-11-15 21:06:30 浏览: 270
根据你提供的错误信息,错误可能是由于在BeautifulSoup中使用了find_all方法时传递的参数有误导致的。在这里,你使用了参数'li',但是find_all方法的参数应该是标签名和标签属性,而不是仅仅是标签名。
要找到所有的<li>标签,你可以使用下面的代码:
```python
soup.find_all('li')
```
或者使用CSS选择器:
```python
soup.select('li')
```
这样就可以找到所有的<li>标签了。希望能帮到你!如果还有其他问题,请随时提问。
相关问题
for li_tag in soup.find_all('li'): ^^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'find_all'
这个错误通常是因为在对一个NoneType对象执行find_all()方法,而不是一个BeautifulSoup对象。这通常是因为在使用find()或find_all()方法时,没有找到任何匹配的标签或元素,因此返回了NoneType对象。因此,在使用find()或find_all()方法之前,应该先检查是否找到了匹配的标签或元素。以下是一个例子,可以避免这个错误:
```python
li_tag = soup.find('li')
if li_tag is not None:
for child in li_tag.children:
print(child)
else:
print('No li tag found')
```
为什么这个循环只循环了一次:df_ret = DataFrame(columns=[" 标题","日期"]) count =1 for tag in soup.find_all('ul', class_='win8mi_latest_5slist'): m_name = tag.find('a').get('title') m_date = tag.find('li') m_date_1 = m_date.findAll('span') df_ret.loc[count] = [m_name, m_date_1] print(df_ret.head()) count = count + 1 df_ret.to_csv('碳汇.csv', encoding= 'gbk')
这个循环只循环了一次的原因是因为在循环内部的代码块中,`df_ret.to_csv('碳汇.csv', encoding= 'gbk')`语句被移动到了循环外部,因此只有循环结束后才会将结果写入到文件中,导致每次循环得到的结果都被覆盖了。如果你想要将每次循环得到的结果都写入到文件中,应该将`df_ret.to_csv('碳汇.csv', encoding= 'gbk')`语句放到循环内部,即:
```python
df_ret = DataFrame(columns=["标题", "日期"])
count = 1
for tag in soup.find_all('ul', class_='win8mi_latest_5slist'):
m_name = tag.find('a').get('title')
m_date = tag.find('li')
m_date_1 = m_date.findAll('span')
df_ret.loc[count] = [m_name, m_date_1]
df_ret.to_csv('碳汇.csv', encoding='gbk')
print(df_ret.head())
count = count + 1
```
这样,每次循环得到的结果都会被写入到文件中。
阅读全文