python - 运行 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 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')
在这种情况下,我们:
open()
文件句柄(url_file
,output_file
)同时处理我们的输入和输出文本文件('urls.txt'
,'output.txt'
)(分别'r'
用于读取和'w'
写入)。with
在我们完全处理完我们的 URL 后,使用该语句自动关闭这些文件。通常,我们需要发出单独的 egurl_file.close()
和output_file.close()
命令(例如在第 5 步)。将我们的 URL 放入一个列表 (
url_list = url_file.readlines()
)。遍历我们的 URL 列表和
write()
我们想要的数据到output_file
.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'
如果文件已经存在(即您将丢失原始数据),(写入模式)将截断文件。