【发布时间】:2019-01-04 01:01:28
【问题描述】:
我正在尝试通过网络抓取从 Lazada 中提取问答部分,但是当某些页面没有任何问题/答案时,我遇到了问题。当我为多个网页运行代码时,我的代码什么也不返回,但仅适用于有问题和答案的一个页面。
如何让代码在第一页没有问题的情况下继续阅读其余网页?
我尝试在我的代码中添加 if else 语句,如下所示。
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 的输出
可以选择榛子吗? 尊敬的客户您好,最新的到期日期为 2019 年,我们将确保到期日期仍然超过 6 个月。--> 来自 url3 的输出
感谢您的帮助,在此先感谢!
【问题讨论】:
-
您收到错误消息了吗?
-
nameList永远不会是 None 因为findAll总是返回一个列表 - 如果它什么也没找到,则返回一个空列表。此外,在迭代时检查nameList是否为 None 是没有意义的。此外,您的代码似乎没有正确缩进;它只从最后一个 URL 中选择项目。 -
@ewwink 我没有收到任何错误消息,它什么也没返回。
-
@t.m.adam 是的,你是对的,我已经通过阅读进行了一些更改,以便更好地理解并设法修复它。
标签: python web-scraping beautifulsoup