BeautifulSoup — условный экспорт в csv

#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"})