#python-3.x #beautifulsoup
#python-3.x #beautifulsoup
Вопрос:
Я хотел бы посмотреть, использует ли сайт WordPress. А затем экспортируйте результат в csv.
Мой приведенный ниже код отлично работает, когда я не включаю условный оператор (если find_wordpress:). Но когда мне требуется условие, что WordPress был найден для экспорта в csv, код прерывается. Я хочу печатать в csv только в том случае, если html действительно найден.
import requests
from bs4 import BeautifulSoup
import csv
response = requests.get("https://variety.com/")
soup = BeautifulSoup(response.text, "lxml")
find_wordpress = soup.find_all(content="WordPress.com")
with open('try10.csv', mode='w') as csv_file:
fieldnames = ['URL', 'STATUS']
writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
#if find_wordpress:
writer.writeheader()
writer.writerow({'URL': "https://variety.com/", 'STATUS': "PRESENT"})
Ответ №1:
Попробуйте:
import requests
from bs4 import BeautifulSoup
import csv
url="https://variety.com/"
response = requests.get(url)
soup = BeautifulSoup(response.text, "lxml")
find_wordpress = soup.find_all(content="WordPress.com")
with open('try10.csv', mode='w') as csv_file:
fieldnames = ['URL', 'STATUS']
writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
if find_wordpress:
print("Its WordPress")
writer.writeheader()
writer.writerow({'URL':url, 'STATUS': WordPress"})
else:
print("Its not WordPress")
writer.writeheader()
writer.writerow({'URL':url, 'STATUS': "No WordPress"})
Комментарии:
1. Привет @small-atom Большое спасибо за ваш ответ! К сожалению, это получилось не совсем так, как ожидалось. Это сработало нормально для положительного ответа. Но csv прервался из-за отрицательного ответа….
2. Отредактировано. Теперь все должно быть в порядке
3. Спасибо @small-atom! Это работает отлично. Я действительно благодарен за вашу помощь.
Ответ №2:
Все еще играю с этим.
a) Когда я поместил сайт, не относящийся к WordPress (keap), в поле URL, он сгенерировал csv, но он был поврежден.
б) Есть ли способ записи в csv без инструкции печати? Может быть, если бы я попытался использовать включение 2 условных выражений? Например:
import requests
from bs4 import BeautifulSoup
import csv
url="https://keap.com/"
response = requests.get(url)
soup = BeautifulSoup(response.text, "lxml")
find_wordpress = soup.find_all(content="WordPress.com")
with open('try15.csv', mode='w') as csv_file:
fieldnames = ['URL', 'STATUS']
writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
if find_wordpress:
writer.writeheader()
writer.writerow({'URL':url, 'STATUS': "WORDPRESS FOUND"})
else:
writer.writeheader()
writer.writerow({'URL':url, 'STATUS': "NO WORDPRESS"})