Как работать с пустым списком - многостраничная утилизация - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь вытащить раздел вопросов и ответов из Lazada через утилизацию, но у меня возникают проблемы, когда на некоторых страницах нет вопросов / ответов.Мой код ничего не возвращает, когда я запускаю его для нескольких веб-страниц, но работает только для одной страницы, на которой есть вопрос и ответ.

Как заставить код продолжить чтение остальных веб-страниц, хотя первая страница не имеет вопросов?

Я попытался добавить оператор if в мой код, как показано ниже.

 import bleach
 import csv
 import datetime
 from bs4 import BeautifulSoup

urls = ['url1','url2','url3']

for url in urls:
    response = requests.get(url)
    soup = BeautifulSoup(response.content, "html.parser")

 now = datetime.datetime.now()
 print ("Date data being pulled:")
 print str(now)
 print ("")

 nameList = soup.findAll("div", {"class":"qna-content"})

for name in nameList:
    if nameList == None:
       print('None')
    else:
       print(name.get_text())
       continue

мой ожидаемый результат будет примерно таким, как показано ниже:

Нет -> вывод из url1 Нет -> вывод из url2
можете выбрать huzelnut?Здравствуйте, уважаемый клиент, последняя дата истечения срока - 2019 год, и мы позаботимся о том, чтобы срок действия истекал более 6 месяцев .--> вывод из url3

IСпасибо за помощь, заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 04 января 2019

у вас неправильный синтаксис, поставьте if nameList == None: вне цикла, также вам нужно исправить отступ.

urls = ['url1','url2','url3']

for url in urls:
    response = requests.get(url)
    soup = BeautifulSoup(response.content, "html.parser")

    now = datetime.datetime.now()
    print ("Date data being pulled:")
    print str(now)
    print ("")

    nameList = soup.findAll("div", {"class":"qna-content"})
    if nameList == None:
        print(url, 'None')
        continue # skip this URL

    for name in nameList:
        print(name.get_text())
0 голосов
/ 04 января 2019

Я внес некоторые изменения в логику кода, и мне удалось напечатать запись на данный момент, поскольку я все еще учусь, надеюсь также поделиться информацией с другими, если у вас есть альтернативное / лучшее решение.

import datetime
from bs4 import BeautifulSoup
import requests

urls = ['url1','url2','url3']

for url in urls:
    response = requests.get(url)
    soup = BeautifulSoup(response.content, "html.parser")

now = datetime.datetime.now()
print ("Date data being pulled:")
print str(now)
print ("")

qna = []
qna = soup.findAll("div", class_= "qna-content")

for qnaqna in qna:
     if not qnaqna:
        print('List is empty')
     else:
        print(qnaqna.get_text())
        continue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...