小编Pol*_*Dot的帖子

在python中将集合写入输出文件

我通常将 json 用于列表,但它不适用于集合。是否有类似的函数将集合写入输出文件 f?像这样的东西,但对于集合:

f=open('kos.txt','w')
json.dump(list, f)
f.close()
Run Code Online (Sandbox Code Playgroud)

python file set output

5
推荐指数
2
解决办法
1万
查看次数

使用 Beautiful Soup 在 Python 中递归抓取网站的所有子链接

最新更新:我将我的问题简化为如何递归地从站点获取所有链接,包括每个页面的子链接等。

我想我知道如何获取一页的所有子链接:

from bs4 import BeautifulSoup
import requests
import re

def get_links(site, filename):
    f=open(filename, 'w')
    url = requests.get(site)
    data = url.text
    soup = BeautifulSoup(data, 'lxml')
    for links in soup.find_all('a'):
        f.write(str(links.get('href'))+"\n")
    f.close()

r="https://en.wikipedia.org/wiki/Main_Page"
filename="wiki"
get_links(r,filename)
Run Code Online (Sandbox Code Playgroud)

我如何递归地确保网站上的所有链接也被收集并写入同一个文件?

所以我尝试了这个,它甚至没有编译。

def is_url(link):
    #checks using regex if 'link' is a valid url
    url = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+#]|[!*/\\,() ]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', link)
    return (" ".join(url)==link)

def get_links(site, filename):
    f=open(filename, 'a')
    url = requests.get(site)
    data = url.text
    soup = BeautifulSoup(data, 'lxml')
    for links in soup.find_all('a'):
        if is_url(links):
            f.write(str(links.get('href'))+"\n")
            get_links(links, filename)
    f.close()
Run Code Online (Sandbox Code Playgroud)

python recursion for-loop beautifulsoup web-scraping

3
推荐指数
1
解决办法
4851
查看次数

标签 统计

python ×2

beautifulsoup ×1

file ×1

for-loop ×1

output ×1

recursion ×1

set ×1

web-scraping ×1