我有一个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运行它吗?
答案 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')
在这种情况下,我们:
open()
文件句柄(url_file
,output_file
)到我们的输入和输出文本文件('urls.txt'
,'output.txt'
)同时(分别使用'r'
进行阅读和'w'
进行书写)。
在完全处理完URL后,使用with
语句自动关闭这些文件。通常,我们需要单独发布url_file.close()
和output_file.close()
命令(例如在第5步)。
将我们的URL放入列表(url_list = url_file.readlines()
)。
浏览我们的URL列表,并将write()
的数据存储到output_file
。
close()
自动两个文件(请参阅步骤2)。
请注意,要将数据简单地添加到现有的output_file
中,您可能希望使用'a'
(追加模式)而不是'w'
(写入模式)。所以例如open('output.txt', 'w') as output_file
将成为open('output.txt', 'a') as output_file
。这很重要,因为'w'
(写入模式)将在文件已存在的情况下截断该文件(即,您将丢失原始数据)。