在Python中使用.write()只能写一行

时间:2017-12-04 05:45:14

标签: python web-crawler file-writing

所以,作为Thenewboston的一项任务,我试图从他的网站上获取一段代码并将其写入文件。代码获取部分工作正常,但写作部分不起作用:

import requests
from bs4 import BeautifulSoup


def crawler(url):
    source = requests.get(url)
    source_text = source.text
    soup_obj = BeautifulSoup(source_text, "html.parser")
    for code in soup_obj.find('code'):
        codes = str(code)
        final_code = codes.replace('<br/>', '').replace('Â', '')
        print(final_code)
        fx = open('crawler_code.txt', 'w')
        fx.write(final_code)
        fx.close()

crawler('https://thenewboston.com/forum/topic.php?id=1610')

2 个答案:

答案 0 :(得分:3)

你在循环中覆盖了文件

在循环写入之前打开要写入的文件

with open('crawler_code.txt', 'w') as fx:
    for code in soup_obj.find('code'):
        codes = str(code)
        final_code = codes.replace('<br/>', '').replace('Â', '')
        print(final_code)
        fx.write(final_code)

答案 1 :(得分:0)

你没有真正提到问题是什么,但我认为当你为每一行打开文件时(因此用'w'模式删除内容),你只有一行写在文件结尾。这是你的问题吗?

如果是这样,请尝试在循环之前,在爬网方法的开头打开文件。