【发布时间】:2020-09-28 18:15:18
【问题描述】:
我已经创建了这个网络爬虫,当它运行时它会中断,因为如果它不能解析某些信息,我没有规则可以继续运行。我正在获取房地产经纪人的姓名和电话号码,但并不是每个人的网站上都有他们的电话号码,当我遇到没有电话号码的房地产经纪人时,脚本将停止工作并返回错误。我是这方面的初学者,如果找不到所需的信息,我找不到正确的方法让它在页面之间保持循环。它只是在找不到更多信息时停止。我知道这是一个菜鸟问题,但对于我的生活,我无法让它继续运行错过的信息。
import requests
from requests import get
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
import numpy as np
from numpy import arange
from time import sleep
from random import randint
headers = {"Accept-Language": "en-US,en;q=0.5"}
my_url = 'https://www.realtor.com/realestateagents/phoenix_az/pg-2'
#opening up connection, grabbing the page
uClient = uReq(my_url)
#read page
page_html = uClient.read()
#close page
uClient.close()
pages = np.arange(1, 30, 1)
for page in pages:
page = requests.get("https://www.realtor.com/realestateagents/phoenix_az/pg-2" + str(page) + "&ref_=adv_nxt", headers=headers)
#html parsing
page_soup = soup(page_html, "html.parser")
sleep(randint(2,10))
#finds all realtors on page
containers = page_soup.findAll("div",{"class":"agent-list-card clearfix"})
for container in containers:
name = container.find('div', class_='agent-name text-bold')
agent_name = name.text.strip()
number = container.find('div', class_='agent-phone hidden-xs hidden-xxs')
agent_number = number.text.strip()
print("name: " + agent_name)
print("number: " + agent_number)
以下是我为尝试解决此问题而编写的规则,但我对此并不擅长,也不完全确定我哪里出错了。
nv = container.find_all('div', attrs={'number': 'nv'})
number = nv[1].text if len(nv) > 1 else '-'
【问题讨论】:
-
也许你可以使用 try - except 块。它将使您能够继续处理错误。见w3schools.com/python/python_try_except.asp
标签: python python-3.x web web-scraping