【发布时间】:2022-01-20 17:56:03
【问题描述】:
import requests
from bs4 import BeautifulSoup
respond_timestamp=[]
for i in range(17,18):
print(i)
try:
url='https://www.darooyab.ir/doctor/9/دکتر-شهرام-مظاهری?page='+str(i)
#print(url)
response = requests.get(url).content.decode()
except:
continue
soup = BeautifulSoup(response,'html.parser')
comment= soup.select('div.comment')
#print( len(comment))
for rt in [i for i in soup.select('div.comment')]:
try:
for out in [j.text for j in rt.select('div:nth-child(3) > span:nth-child(1) > label:nth-child(1)')]:
#print(rt[1])
pattern=r'دکتر شهرام مظاهری - متخصص قلب و عروق'
respond_timestamp.append(re.sub(pattern,'',out))
except:
respond_timestamp.append(None)
print(len(respond_timestamp))
我想将respond_timestamp 附加到列表中。 respond_timestamp 的返回值可能为空,然后我使用try/except 和append(None),但None 不会添加到列表中。因为列表的数量很重要。
我该怎么办?
【问题讨论】:
-
当您说respond_timestamp 可以为空时,您的意思是respond_timestamp = '' 或respond_timestamp = None?
-
你可能会从捕获和处理异常中获得更多,而不是完全丢弃它们;
except Exception as ex:.. 然后你可以在except块的范围内引用ex(例如用print(repr(ex))显示它,显式检查它的类型,检查它的方法等) - 甚至是Zen of Python (import this)建议错误不应该默默地过去。 -
我从一些网站抓取问题/答案,通常,一些答案是空的,但问题存在,因此我应该为答案的属性写“无”。最后我将所有列表转换为 JSON 文件。
标签: python list web-scraping beautifulsoup web-crawler