为什么爬取的内容保存为txt文本

为什么爬取的内容保存为txt文本,文件里没有内容的?
代码如下:

import requests
from bs4 import BeautifulSoup

url = 'https://www.shicimingju.com/book/luotongsaobei.html'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.69'
}

page = requests.get(url = url,headers = headers)
page.encoding = 'utf-8'
page_text = page.text

print(page_text)

soup = BeautifulSoup(page_text,'lxml')
li_list = soup.select('.book-mulu > ul > li')
fp = open('./luotongsaobei.txt', 'w' ,encoding= 'utf-8')
for li in li_list:
    title = li.a.string
    detail_url += 'http://www.shicimingju.com' + li.a['href']
    detail_page_text = requests.get(url = detail_url, headers = headers).text

    soup = BeautifulSoup(detail_page_text,"html.parser")
    content = soup.find("div", class_="chapter_content").text.strip()
    fp.write(title + '/n' + content + '/n')
    print(title,'爬取成功')
fp.close()




您的代码存在一些问题,包括选择器不正确、变量名不规范以及代码逻辑错误。我将为您修改代码,以使其能够正常运行。

import requests
from bs4 import BeautifulSoup

url = 'https://www.shicimingju.com/book/luotongsaobei.html'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.69'
}
page = requests.get(url, headers=headers)
page.encoding = 'utf-8'
page_text = page.text

soup = BeautifulSoup(page_text, 'lxml')
li_list = soup.find_all('li', class_='book-mulu')  # 使用find_all来选择所有符合条件的元素

with open('./luotongsaobei.txt', 'w', encoding='utf-8') as fp:
    for li in li_list:
        title = li.find('a').string  # 获取<a>标签的文本内容
        detail_url = 'http://www.shicimingju.com' + li.find('a')['href']  # 获取<a>标签的href属性值并拼接成完整链接
        detail_page = requests.get(detail_url, headers=headers)
        detail_page_text = detail_page.text
        
        detail_soup = BeautifulSoup(detail_page_text, "html.parser")
        content = detail_soup.find("div", class_="chapter_content").text.strip()  # 获取符合条件的div标签的文本内容
        fp.write(title + '\n' + content + '\n')  # 使用\n作为换行符
        print(title, '爬取成功')

请注意,此代码仅用于演示目的,并且可能无法处理所有情况。在实际应用中,您可能需要根据具体情况进行修改和优化。