У меня есть уникальная проблема, которую, как я думал, я решил, пока я не уперся в стену, используя цикл While Loop для управления ходом этой программы.
Сводка:
У меня есть плоский файл (CSV или текст) с некоторыми URL-адресами, которые я хочу очистить, добавить новый тег в HTML с помощью BeautifulSoup (который работал), а затем сохранить каждый очищенный URL-адрес под новым именем файла.
Что мне нужно:
- Перебирать каждую строку
- Получить URL
- Очистите страницу каждого URL
- Добавить новый HTML-тег
- Сохраните файл, используя имя HTML-файла, если это возможно.
- Снова перезапустите ту же программу, где она перейдет к следующей строке.
Я очень уверен, что это связано с тем, что я не могу понять основы, я все еще пытаюсь понять это. Вот мой код:
Что случилось:
Используя Python3, код действительно работает, я использовал Jupyter для построчного просмотра кода и серии операторов печати, чтобы увидеть, что возвращается при запуске цикла While Loop.
Проблема в том, что сохраняется только один файл, а URL в конце файла - единственное, что сохраняется. Остальные URL-адреса очищаются.
Как сделать так, чтобы каждая строка повторялась и очищалась для уникального сохранения перед переходом к следующей строке? Я неправильно использую эти конструкции?
URL:
https://www.imgacademy.com/media/headline/img-academy-u19-girls-win-fysa-state-cup-u19-championship
Код:
import csv
import requests
from bs4 import BeautifulSoup as BS
filename = 'urls.csv'
with open(filename, 'r+') as file:
while True:
line = file.readline()
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.0'
headers = {'User-Agent':user_agent}
response = requests.get(line, headers)
print(response)
soup = BS(response.content, 'html.parser')
html = soup
title = soup.find('title')
meta = soup.new_tag('meta')
meta['name'] = "robots"
meta['content'] = "noindex, nofollow"
title.insert_after(meta)
for i
with open('{}'".txt".format("line"), 'w', encoding='utf-8') as f:
outf.write(str(html))
if (line) == 0:
break