运行python脚本并输出到txt以获取URL列表

时间:2019-03-28 18:58:42

标签: python

我有一个Python脚本,用于抓取某些URL。这些URL在txt文件的列表中。

python脚本(仅相关部分)如下:

import urllib2
from bs4 import BeautifulSoup
quote_page = 'https://www.example.com/post/1245'

# rest of the code is here

print quote_page
print url
print title
print description
print actors
print director

我想为txt文件中的多个URL运行此脚本,然后输出到单个txt文件。

有什么想法可以为txt文件中的URL运行它吗?

1 个答案:

答案 0 :(得分:1)

您可能希望使用Python with语句(在PEP 343中引入)和内置的open()函数:

# Python 2
import urllib2
import BeautifulSoup

# Python 3
# import urllib3
# from bs4 import BeautifulSoup

# Python 2.6+ and Python 3
with open('urls.txt','r') as url_file, open('output.txt', 'w') as output_file:

    url_list = url_file.readlines()

    for url_item in url_list:

        # quote_page = 'https://www.example.com/post/1245'
        quote_page = url_item

        # rest of the code is here

        # Python 2 and 3
        output_file.write(quote_page)
        output_file.write(url)
        output_file.write(title)
        output_file.write(description)
        output_file.write(actors)
        output_file.write(director)
        output_file.write('\n')

在这种情况下,我们:

  1. open()文件句柄(url_fileoutput_file)到我们的输入和输出文本文件('urls.txt''output.txt')同时(分别使用'r'进行阅读和'w'进行书写)。

  2. 在完全处理完URL后,使用with语句自动关闭这些文件。通常,我们需要单独发布url_file.close()output_file.close()命令(例如在第5步)。

  3. 将我们的URL放入列表(url_list = url_file.readlines())。

  4. 浏览我们的URL列表,并将write()的数据存储到output_file

  5. close()自动两个文件(请参阅步骤2)。

请注意,要将数据简单地添加到现有的output_file中,您可能希望使用'a'(追加模式)而不是'w'(写入模式)。所以例如open('output.txt', 'w') as output_file将成为open('output.txt', 'a') as output_file。这很重要,因为'w'(写入模式)将在文件已存在的情况下截断该文件(即,您将丢失原始数据)。