繁体   English   中英

我无法将 bs4 output 导出到文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM