[英]I cant export bs4 output to a file
我刚开始学习刮板,并试图将链接导出到 txt 文件
但我被错误困住了
TypeError: a bytes-like object is required, not 'str'
这是我的代码:
from bs4 import BeautifulSoup as bs
import requests
def get_links():
url = 'https://arxiv.org/list/math/new'
page = requests.get(url)
data = page.text
soup = bs(data, 'html.parser')
for link in soup.find_all('a'):
links = link.get('href')
with open('urlfile.txt','wb') as f:
f.write(links)
get_links()
有人可以向我解释发生了什么问题,我该如何解决? :)
好吧,这部分出了什么问题:
for link in soup.find_all('a'):
links = link.get('href')
with open('urlfile.txt','wb') as f:
f.write(links)
首先,您尝试将字符串写入以二进制模式 ( 'wb'
) 打开的文件 - 这里不需要二进制模式。
其次,您 go 通过您的循环中的所有a href
链接,并为每个链接打开同一个文件进行编写。 因此,即使您修复了模式问题,您也会用下一个链接覆盖上一个链接 - 最后,只有最后一个链接会在文件中。 您需要在循环之外open
。 最后,在您编写的每个链接之后添加一个分隔符 ( \n
) 可能是个好主意……
with open('urlfile.txt','w') as f:
for link in soup.find_all('a'):
links = link.get('href')
if links:
f.write(links + '\n')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.