Невозможно поместить разные текстовые файлы, создавая разные подпапки в основной папке - PullRequest
0 голосов
/ 01 февраля 2019

Я написал скрипт на python, чтобы вычеркнуть первые пять заголовков различных постов с веб-страницы, а затем написать заголовки в отдельных текстовых файлах и поместить их в пять разных подпапок в папке рабочего стола DataStorage.

В настоящее время мой следующий скрипт может анализировать заголовки пяти постов и записывать их в пять различных текстовых файлов и помещать их в папку рабочего стола DataStorage.

Как создать пятьразличные подпапки в основной папке и помещать текстовые файлы в соответствующие подпапки?

Это моя попытка до сих пор:

import os
import requests
from bs4 import BeautifulSoup

url = "https://stackoverflow.com/questions/tagged/web-scraping"

dirf = r"C:\Users\WCS\Desktop\DataStorage" #The main folder in desktop
if not os.path.exists(dirf):os.makedirs(dirf)
os.chdir(dirf)

res = requests.get(url)
soup = BeautifulSoup(res.text,"lxml")
for item in soup.select(".summary .question-hyperlink")[:5]:
    filename = item.text.split(" ")[0]
    with open(filename+'.txt','w', encoding='utf-8') as filename:
        filename.write(item.text)

Ответы [ 3 ]

0 голосов
/ 01 февраля 2019

Следующее может работать

import os
import requests
from bs4 import BeautifulSoup

url = "https://stackoverflow.com/questions/tagged/web-scraping"

dirf = r"C:\Users\WCS\Desktop\DataStorage"  # The main folder in desktop
if not os.path.exists(dirf):
    os.makedirs(dirf)
os.chdir(dirf)

res = requests.get(url)
soup = BeautifulSoup(res.text, "lxml")
for item in soup.select(".summary .question-hyperlink")[:5]:
    filename = item.text.split(" ")[0]
    curr_dir = os.path.join(dirf, filename)
    os.makedirs(curr_dir)
    filepath = os.path.join(curr_dir, filename+'.txt')
    with open(filepath, 'w', encoding='utf-8') as f:
        f.write(item.text)
0 голосов
/ 01 февраля 2019

Чтобы создать каталог, вы можете использовать os.mkdir(PATH).Чтобы создать файл, вы можете open файл с разрешением w+, который создаст файл, если он не существует, а также перепишет файл, если он существует.

0 голосов
/ 01 февраля 2019

никогда используйте os.chdir, если вы можете избежать этого, а именно: большую часть времени / всегда .

Плюс это мешает вам понять логикупутей к файлам вне текущего каталога.

Предпочитайте использовать абсолютный путь к файлам, которые вы читаете / пишете.

Поэтому удалите

os.chdir(dirf)

, теперь измените это:

with open(filename+'.txt','w', encoding='utf-8') as filename:

от

subdir = os.path.join(dirf,item)
if os.path.exists(subdir):
    os.mkdir(subdir)   # create first time
with open(os.path.join(subdir,filename+'.txt'),'w', encoding='utf-8') as f:
   f.write(item.text)

где item - относительный путь к вашему подкаталогу (он должен соответствовать текущим правилам файловой системы, что не гарантируется на 100%, так как он исходит из HTMLфайл).Также обратите внимание, что вам не следует снова использовать filename для файла handle .Я обычно использую f или filehandle

...