如何将我的网页抓取结果保存到美丽汤中的文本文件中?

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.openf.writef.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()

【讨论】:

以上是关于如何将我的网页抓取结果保存到美丽汤中的文本文件中?的主要内容,如果未能解决你的问题,请参考以下文章

抓取特定文本(字符串)的网页

美丽汤中的提取链接[重复]

网页抓取后如何保存结果文本

从 <a> 美丽的汤中提取 href

苹果 swift 3 中的网页抓取

将结果保存到文本文件