ywzq23 2022-08-12 12:20 采纳率: 100%
浏览 266
已结题

python爬虫爬取到的内容无法输出到txt文档中

我最近想要学习python,想从爬虫开始,应为本人还在上学,只学过java与c#桌面编程,所以有一定基础,但学的不深。在今天我所编写的爬虫中,我的爬虫爬取到了我所想要的网页内容,结果在输出成txt文档时,老是输出成空的文档,我在csnd里搜索“python输出txt文档”找了几个输出txt文档的代码,结果在代码运行完后,控制台输出了我想要的结果,但我的txt文档是空的,不知道是哪里错了。

以下是我编写的代码

from urllib import request

url = 'https://fanqienovel.com/reader/6924594094115127816'  # 要爬取内容的网址
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 '
                  'Safari/537.36 '  # 要爬取网站的 user-agent
}

req = request.Request(url=url, headers=headers)
rsp = request.urlopen(req)
print(rsp.read().decode('utf-8'))  # 以utf-8编码输出到控制台

file_handle = open('G:/txt.txt', mode='a')  # 打开要读取的txt文档
file_handle.write(rsp.read().decode('utf-8'))  # 将爬取的内容写入txt.txt文件
file_handle.close()  # 关闭txt.txt文档

代码截图:

img


控制台是没问题的

img


但txt文档是空的

img


我在代码里经过多次尝试却始终无法发现所在的问题,以下是我所做的尝试:

import fileinput
from urllib import request

url = 'https://fanqienovel com/reader/6924594094115127816'  # 要爬取内容的网址
headers = {
    'user-agent': 'Mozilla/5 0 (Windows NT 10 0; Win64; x64) AppleWebKit/537 36 (KHTML, like Gecko) Chrome/104 0 0 0 '
                  'Safari/537 36 '  # 要爬取网站的 user-agent
}
req = request Request(url=url, headers=headers)
rsp = request urlopen(req)
print(rsp read() decode('utf-8'))  # 以utf-8编码输出到控制台

path2 = r'G:\txt txt'
file2 = open(path2, 'w+')
file2 write(rsp read() decode('utf-8'))
fileinput close()
import fileinput
from urllib import request

url = 'https://fanqienovel.com/reader/6924594094115127816'  # 要爬取内容的网址
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 '
                  'Safari/537.36 '  # 要爬取网站的 user-agent
}

req = request.Request(url=url, headers=headers)
rsp = request.urlopen(req)
print(rsp.read().decode('utf-8'))  # 以utf-8编码输出到控制台

with open("G:/txt.txt", "w") as f:
    f.write(rsp.read().decode('utf-8'))

这两个代码都是输出txt文档时,文档输出是空的,我觉得应该是“rsp read() decode('utf-8')”这串代码需要转换成其他代码,但是我不知道怎么转换,也不知道怎么搜索。

我想要的结果很简单,就是将控制台输出的内容输出成txt文档。
(如下图)(下图是复制粘贴,不是输出)

img

请问我的代码出了什么问题和怎么样解决?

  • 写回答

3条回答 默认 最新

  • starlight_2007 2022-08-13 14:32
    关注

    不如换用requests库和bs4库吧。

    from bs4 import BeautifulSoup as bs
    import requests as r
    
    url = 'https://fanqienovel.com/reader/6924594094115127816'  # 要爬取内容的网址
    headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 ''Safari/537.36 '}# 要爬取网站的 user-agent
     
    html_doc=r.get(url=url,headers=headers).content
    soup=bs(html_doc,'lxml')
    print(soup)  #以utf-8编码输出到控制台
     
    file_handle = open('G:/txt.txt', mode='a')  # 打开要读取的txt文档
    file_handle.write(soup.text)  # 将爬取的内容写入txt.txt文件
    file_handle.close()  # 关闭txt.txt文档
    

    很好用,帮您调试过了。不过输入到txt文本文档里的是文字信息,不是网页源码。

    img

    当然,如果您想要的仅仅是网页源码,也可以这样写:

    from bs4 import BeautifulSoup as bs
    import requests as r
    
    url = 'https://fanqienovel.com/reader/6924594094115127816'  # 要爬取内容的网址
    headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 ''Safari/537.36 '}# 要爬取网站的 user-agent
     
    html_doc=r.get(url=url,headers=headers).content
    soup=bs(html_doc,'lxml')
    print(soup)  #以utf-8编码输出到控制台
     
    file_handle = open('G:/txt.txt', mode='a')  # 打开要读取的txt文档
    file_handle.write(str(soup))  # 将爬取的内容写入txt.txt文件
    file_handle.close()  # 关闭txt.txt文档
    

    这样,输出到文件里的,就是经过bs4处理过的网页源码。
    见下图:

    img

    PS:也可以把第二个代码块倒数第二行的'str(soup)'改成'str(html_doc)',然后删去所有和bs4沾上关系的代码,如下代码:

    import requests as r
    
    url = 'https://fanqienovel.com/reader/6924594094115127816'  # 要爬取内容的网址
    headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 ''Safari/537.36 '}# 要爬取网站的 user-agent
    
    html_doc=r.get(url=url,headers=headers).content
    print(html_doc)  #以utf-8编码输出到控制台
     
    file_handle = open('G:/txt.txt', mode='a')  # 打开要读取的txt文档
    file_handle.write(str(html_doc))  # 将爬取的内容写入txt.txt文件
    file_handle.close()  # 关闭txt.txt文档
    

    运行效果:

    img

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月21日
  • 已采纳回答 8月13日
  • 创建了问题 8月12日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效