如何将我的网页抓取结果保存到美丽汤中的文本文件中?
Posted
技术标签:
【中文标题】如何将我的网页抓取结果保存到美丽汤中的文本文件中?【英文标题】:How can I save the results of my web scraping to a text file in beautiful soup? 【发布时间】:2019-09-15 22:38:34 【问题描述】:我尝试为一些网络抓取编写此代码。代码运行良好,但我仍然无法弄清楚如何将网络抓取的结果保存到 .txt 文件中?我想将“print(div.text)”输出的结果写入.txt文件。
import bs4 as bs
import urllib.request
for pg in range(1, 100 + 1):
source = urllib.request.urlopen('https://dsalsrv04.uchicago.edu/cgi-bin/app/hayyim_query.py?page='+ str(pg)).read()
soup = bs.BeautifulSoup(source,'lxml')
for div in soup.find_all('div', class_='hw_result'):
print(div.text)
【问题讨论】:
打开一个文件进行写入,然后不要调用print()
,而是使用myfile.write()
。有什么困难?
文件的格式和名称如何?我应该在循环之前打开文件吗?
我不明白这个问题。文本文件没有特定的格式,您可以随意命名文件。是的,在循环之前打开文件。
docs.python.org/3/tutorial/…
【参考方案1】:
也许,f.open
、f.write
和 f.close
:
import bs4 as bs
import urllib.request
import re
output = ''
for pg in range(1, 100 + 1):
source = urllib.request.urlopen('https://dsalsrv04.uchicago.edu/cgi-bin/app/hayyim_query.py?page='+ str(pg)).read()
soup = bs.BeautifulSoup(source,'lxml')
for div in soup.find_all('div', class_='hw_result'):
output += div.text
output = re.sub(r"[\r\n]+", "", output)
f = open('/any/directory_you_like/any_name_that_you_like_with_any_extension.txt', 'w')
try:
f.write(output)
finally:
f.close()
【讨论】:
谢谢。该代码有效。但是有很多空行是不必要的。有什么办法可以在代码运行时去掉空行吗?【参考方案2】:在循环之前打开一个文件
file = open(“testfile.txt”, “w”)
第一个参数是文件名,第二个表示你要写入这个文件
然后你应该使用file.write(div.text)
而不是print(div.text)
循环结束后用file.close()
关闭文件
毕竟你的代码应该是这样的:
import bs4 as bs
import urllib.request
file = open(“testfile.txt”, “w”)
for pg in range(1, 100 + 1):
source = urllib.request.urlopen('https://dsalsrv04.uchicago.edu/cgi-bin/app/hayyim_query.py?page='+ str(pg)).read()
soup = bs.BeautifulSoup(source,'lxml')
for div in soup.find_all('div', class_='hw_result'):
file.write(div.text)
file.close()
【讨论】:
以上是关于如何将我的网页抓取结果保存到美丽汤中的文本文件中?的主要内容,如果未能解决你的问题,请参考以下文章