2201_75395254 2023-09-06 10:26 采纳率: 100%
浏览 2
已结题

为什么爬取的内容保存为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()




  • 写回答

1条回答 默认 最新

  • qq_37749055 2023-09-06 10:33
    关注

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

    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, '爬取成功')
    

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月6日
  • 已采纳回答 9月6日
  • 创建了问题 9月6日

悬赏问题

  • ¥15 欧拉系统opt目录空间使用100%
  • ¥15 ul做导航栏格式不对怎么改?
  • ¥20 用户端如何上传图片到服务器和数据库里
  • ¥15 现在研究生在烦开题,看了一些文献,但不知道自己要做什么,求指导。
  • ¥30 vivado封装时总是显示缺少一个dcp文件
  • ¥100 pxe uefi启动 tinycore
  • ¥15 我pycharm运行jupyter时出现Jupyter server process exited with code 1,然后打开cmd显示如下
  • ¥15 可否使用carsim-simulink进行四轮独立转向汽车的联合仿真,实现四轮独立转向汽车原地旋转、斜向形式、横移等动作,如果可以的话在carsim中如何进行相应设置
  • ¥15 Caché 2016 在Java环境通过jdbc 执行sql报Parameter list mismatch错误,但是同样的sql使用连接工具可以查询出数据
  • ¥15 疾病的获得与年龄是否有关