• 未输出结果且运行不报错,如何解决?(语言-python)


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 m0_64711406 2024-07-15 16:51 采纳率: 0% 浏览 15 首页/ 编程语言 / 未输出结果且运行不报错,如何解决?(语言-python) python import requests from bs4 import BeautifulSoup headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0' } url = 'https://www.shanxi.gov.cn/szf/zfgzbg/szfgzbg/' page_text =requests.get(url=url,headers=headers).text soup = BeautifulSoup(page_text,'lxml') #在首页中解析出章节的标题和详情页的url soup = BeautifulSoup(page_text ,'lxml') #解析每一年政府工作报告和详情页的URL li_list = soup.select('dd > common-textnews-list sxszf-mlists-item sxszf-slists-item > li') fp = open('D:\Pycharm运行结果文件\shanbaogao.txt','w',encoding='utf-8') #获取li标签中所有的a标签 for li in li_list: title = li.a.string detail_url = 'https://www.shanxi.gov.cn/szf/zfgzbg/szfgzbg'+li.a['href'] #详情页发起请求,解析出章节内容 detail_page_text = requests.get(url=detail_url,headers=headers).text #解析出详情页中相关的具体内容 detail_soup = beautifulsoup(detail_page_text, 'lxml') div_tag = detail_soup.find('div',class_='view TRS_UEDITOR trs_paper_default trs_word trs_web') #解析到了章节内容 content = div_tag.text fp.write(title+':'+content+'n') print(title,'爬取成功!!!') 最后不出结果也没有报错 展开全部 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    2条回答 默认 最新

    • 阿里嘎多学长 2024-07-15 17:03
      关注

      以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


      你已经列出了非常详细的解决步骤,这些步骤将有助于你诊断和解决Python爬虫程序中的问题。以下是一些具体的建议和代码示例,以帮助你实现这些步骤:

      1. 检查网络请求: 在requests.get()之后立即打印响应的状态码和内容,确保请求成功。

        response = requests.get(url=url, headers=headers)
        print(f"Status Code: {response.status_code}")
        print(response.text[:500])  # 打印前500个字符以查看页面内容
        
      2. 验证BeautifulSoup解析: 在创建BeautifulSoup对象后打印它,确保它包含了预期的HTML结构。

        soup = BeautifulSoup(page_text, 'lxml')
        print(soup.prettify()[:1000])  # 打印前1000个字符的格式化HTML
        
      3. 检查CSS选择器: 打印选择器匹配到的所有元素,确保它们是预期的元素。

        li_list = soup.select('dd > common-textnews-list sxszf-mlists-item sxszf-slists-item > li')
        print(li_list)  # 打印所有匹配的元素
        
      4. 详情页URL处理: 确保详情页的URL拼接正确,并且可以通过requests.get()获取到内容。

        detail_response = requests.get(url=detail_url, headers=headers)
        print(f"Detail Status Code: {detail_response.status_code}")
        
      5. 内容提取: 在提取内容后打印出来,确保内容是预期的。

        content = div_tag.text if div_tag else 'No content found'
        print(f"Content for '{title}': {content[:200]}")  # 打印标题和内容的前200个字符
        
      6. 文件写入检查: 在写入文件后检查文件路径和内容,确保写入操作成功。

        fp.write(title + ':' + content + '\n')
        print(f"Written to file: {title}")
        
      7. 增加异常处理: 在requests.get()和文件写入操作周围添加try-except块,以便捕获并处理可能的异常。

        try:
            response = requests.get(url=url, headers=headers)
            response.raise_for_status()  # 将触发HTTPError,如果状态码不是200
        except requests.exceptions.RequestException as e:
            print(f"Request failed: {e}")
        
        try:
            fp = open('D:\\Pycharm运行结果文件\\shanbaogao.txt', 'w', encoding='utf-8')
            # 写入文件的代码
        except IOError as e:
            print(f"File operation failed: {e}")
        

      请注意,文件路径中的反斜杠应该使用双反斜杠 \\ 或原始字符串前缀 r"" 来避免转义问题。

      最后,请确保你的代码中没有逻辑错误,例如在循环中重复解析相同的page_text,这可能是导致你看不到结果的原因之一。希望这些建议能帮助你解决问题。

      展开全部

      评论 编辑记录
    • 世霓弥逆 2024-07-20 19:02
      关注

      部报错那不就是li_list没有值直接退出循环了嘛,看看是不是你爬虫写的有问题,要么抓错标签了,要么就是网页有反扒,把cookice加上,伪装好头部headers内容,咋连请求信息都不放就光挂浏览器信息啊

      评论
    编辑
    预览

    报告相同问题?

  • 相关阅读:
    学习记录:js算法(三十五):K 个一组翻转链表
    我不说你知道 DotImage SDK之DotViewer 在线文档查看编辑?
    MySQL源码解析之执行计划
    OpenHarmony3.0如何轻松连接华为云IoT设备接入平台?
    MQ篇---第一篇
    Java代码中如何清空HashMap对象中所有的数据呢?
    Linux命令-awk
    GO实现Redis:GO实现内存数据库(3)
    Flutter TextField 点击时如何定位光标位置
    Python中的Paramiko与FTP文件夹及文件检测技巧
  • 原文地址:https://ask.csdn.net/questions/8129957