首页 > 解决方案 > 运行 python 脚本并输出到 txt 以获取 URL 列表

问题描述

我有一个用于抓取一些 URL 的 python 脚本。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 运行它吗?

标签: python

解决方案


您可能希望使用 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_file, output_file)同时处理我们的输入和输出文本文件('urls.txt', 'output.txt')(分别'r'用于读取和'w'写入)。

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

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

  4. 遍历我们的 URL 列表和write()我们想要的数据到output_file.

  5. close()自动生成我们的两个文件(参见第 2 步)。

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


推荐阅读