DS705 2023-10-29 14:44 采纳率: 0%
浏览 13

Python爬虫爬取的文件空白

实验内容为爬取百度贴吧星空吧的30条回复数大于等于3以上的帖子,将帖子及其所有回复内容保存到以帖子标题命名的html文件中。
个人代码:

#引入第三方库
from bs4 import BeautifulSoup
import requests
#查找信息
i,num=0,0#页码,记录帖子数量
while num<30:
    code=requests.get(url="https://tieba.baidu.com/f?kw=星空&ie=utf-8&pn="+str(i*50))#发送网址请求,i决定页码
    code.encoding = 'utf-8' 
    code=BeautifulSoup(code.text, "html.parser")#转文本
    content=code.find_all('div', class_='t_con cleafix')#找到所有帖子
    for item in content:
        reply_num=item.find_all("span",class_="threadlist_rep_num center_text")#找到各个帖子下的回复数
        if int(reply_num[0].text)>=3:#如果回复数至少为3
            num+=1#记录一个帖子,数量+1
            inf=item.find('a', class_= 'j_th_tit')#获取帖子信息
            title=inf.attrs["title"].strip()#获取帖子标题
            href=inf.attrs['href']#获取帖子超链接
            web='https://tieba.baidu.com'+href#获取帖子网址
            code1=requests.get(url=web)#发送网址请求
            code1.encoding = 'utf-8' 
            code1=BeautifulSoup(code1.text, "html.parser")#转文本
            content1=code1.find_all("div",class_="d_post_content j_d_post_content ")#获取帖子内容与回复内容
            f=open('E:/files/experienment_5/'+title+'.html',"a")
            for j in content1:
                f.write(j.text)#写入文件
            f.close()
    i+=1

跑下来最成功的一次是30个html文件是空白的,其他情况要么是无响应,要么是中间报错

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-30 00:40
    关注

    【以下回答由 GPT 生成】

    问题分析:

    根据提供的代码,文件生成为空白的原因可能有以下几个可能性:

    1. 获取网页内容的部分有错误,导致无法正确获取贴吧帖子和回复的信息。
    2. 写入文件部分有问题,导致无法正确将信息写入文件。
    3. 爬取帖子和回复的逻辑有误,导致无法正确获取帖子和回复的数量和内容。

    解决方案: 根据代码和问题描述,可能存在以下几个问题,下面逐个解决:

    1. 获取网页内容的部分有错误,导致无法正确获取贴吧帖子和回复的信息。 请检查以下内容:

    2. 确保requests库已正确安装。

    3. 确保能够正确访问https://tieba.baidu.com/f?kw=星空&ie=utf-8&pn=0,并得到正确的返回结果。

    可尝试使用以下代码来测试是否能够正确获取网页内容:

    import requests
    
    url = "https://tieba.baidu.com/f?kw=星空&ie=utf-8&pn=0"
    response = requests.get(url)
    
    print(response.text)
    

    如果能够输出网页内容,则说明获取网页内容的部分没有问题。如果无法正确输出网页内容,可能需要检查网络连接或请求头等问题。

    1. 写入文件部分有问题,导致无法正确将信息写入文件。 请检查以下内容:

    2. 确保文件的路径存在,且有写入权限。

    3. 修改文件的打开模式为"w",即每次运行都重新创建文件。

    修改代码如下:

    f = open('E:/files/experienment_5/' + title + '.html', 'w')
    for j in content1:
        f.write(j.text)  # 写入文件
    f.close()
    
    1. 爬取帖子和回复的逻辑有误,导致无法正确获取帖子和回复的数量和内容。 请检查以下内容:

    2. 确保在获取帖子和回复时的选择器和属性正确。

    3. 确保获取的帖子数量符合预期。

    可以先输出获取到的帖子和回复数量,以及帖子和回复的内容,检查是否正确。

    修改代码如下:

    for j in content1:
        print(j.text)
    
    print("帖子数量:", num)
    

    如果能够正确输出帖子和回复的内容,并且帖子数量符合预期,则说明爬取逻辑没有问题。

    综上所述,根据以上解决方案检查和修改代码,可以解决生成文件为空白的问题。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月29日