ggly55
2021-04-20 16:14
采纳率: 100%
浏览 32
已采纳

萌新求救,文件保存一部分后就报错?

 

import requests
from bs4 import BeautifulSoup
import os

url1 =' http://www.juda.cn'

def request(url):
    resp = requests.get(url)
    html = resp.content
    soup = BeautifulSoup(html,"lxml")
    # print(soup)
    return soup


def main(url):
    soup = request(url)
    lis = soup.find('div',class_="news_list").find_all('div',class_="text")

    #数据保存目录
    path = os.getcwd()+u'//爬取内容1//'
    if not os.path.exists(path):
        os.mkdir(path)
    #获取每篇文章的链接
    for i in lis:
        ff = i.find('div', class_="a_title").find_all('a', class_="size4-6p")
        for it in ff:
            link = url1 + it.get('href')

            #请求每篇文章
            result = request(link)
            title = result.find('section',class_="title_part").find('h1',class_="size1-9p").get_text()
            # print(title)
            paper = result.find('div',class_="all col-md-12").find_all('p')
            content = ''
            for p in paper:
                content += (p.text + '\n')
                # print(content)
            # 文章标题内容保存
            totlename = path + title +'.text'
            print(totlename)
            paper = open(totlename,'w',encoding='utf-8')
            paper.write('<<' + title + '>>\n\n')
            paper.write(content)
            paper.close()

if __name__ == '__main__':
    for i in range(1, 7):
        firsturl = 'http://www.juda.cn/search/index.html?keyword=%E4%B8%AD%E5%9B%BD%E9%93%81%E5%A1%94+%E6%A2%AF%E6%AC%A1%E7%94%B5%E6%B1%A0&type=news'
        url2 = firsturl + "&page=" + str(i)
        main(url2)

 

 

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • 天元浪子 2021-04-20 16:27
    已采纳

    题主抓到内容解析出来的title,有多个包含了/符号,比如“中国铁塔以0.68元/Wh价格收购电池 梯次利用储能成本优势明显”。作为文件名,这是一个非法的符号,所以程序崩掉了。建议将这个/去掉或替换为其他字符,比如导入re模块,将第39行改为:

    totlename = path + re.compile(r'/').sub('-', title) +'.text'

    轻松写完全部文件。

    已采纳该答案
    评论
    解决 1 无用
    打赏 举报
  • 找不到你要保存的文件,文件名称怎么还有空格呢。

    评论
    解决 1 无用
    打赏 举报
  • 文件名中有“/”字符,不合法啊

    评论
    解决 1 无用
    打赏 举报
  • CSDN专家-Yang 2021-04-20 16:21

    get_text()之后, 可能获取的文本中有空格或者特殊字符, 可以先清洗下, 再保存文件.

    • 比如去掉空格 strip()
    评论
    解决 1 无用
    打赏 举报
  • 有问必答小助手 2021-04-20 18:09

    您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    评论
    解决 无用
    打赏 举报
  • 有问必答小助手 2021-04-21 18:05

    非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

    速戳参与调研>>>https://t.csdnimg.cn/Kf0y

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题