【发布时间】:2020-09-30 20:03:59
【问题描述】:
我使用https://www.realtor.com/realestateagents/phoenix_az//pg-2 作为我的起点。我想在收集姓名和数字时从第 2 页转到第 5 页以及中间的每一页。我正在完美地收集第 2 页上的信息,但是我无法在不插入新 URL 的情况下将其转到下一页。我正在尝试设置一个循环来自动执行此操作,但是在编写了我认为是循环的代码之后,我只是在刮板停止之前仅在第 2 页(起点)上获取信息。 我也是循环新手,尝试了多种方法,但都无法正常工作。
下面是完整的代码。
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
import pandas as pd
from time import sleep
from random import randint
headers = {'user-agent': ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)'
'AppleWebKit/537.36 (KHTML, like Gecko)'
'Chrome/45.0.2454.101 Safari/537.36'),
'referer': 'https://www.realtor.com/realestateagents/phoenix_az//pg-2'}
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(2, 3, 1)
for page in pages:
page = requests.get("https://www.realtor.com/realestateagents/phoenix_az//pg-" , headers=headers)
#html parsing
page_soup = soup(page_html, "html.parser")
#finds all realtors on page
containers = page_soup.findAll("div",{"class":"agent-list-card clearfix"})
#creating csv file
filename = "phoenix.csv"
f = open(filename, "w")
headers = "agent_name, agent_number\n"
f.write(headers)
#controlling scrape speed
for container in containers:
try:
name = container.find('div', class_='agent-name text-bold')
agent_name = name.a.text.strip()
except AttributeError:
print("-")
try:
number = container.find('div', class_='agent-phone hidden-xs hidden-xxs')
agent_number = number.text.strip()
except AttributeError:
print("-")
except NameError:
print("-")
try:
print("name: " + agent_name)
print("number: " + agent_number)
except NameError:
print("-")
try:
f.write(agent_name + "," + agent_number + "\n")
except NameError:
print("-")
f.close()
【问题讨论】:
-
我也意识到我将 np.arange 设置为在第 3 页停止,这是出于测试目的。
-
requests.get("https://www.realtor.com/realestateagents/phoenix_az//pg-"是不是打算在pg-后面填页码? -
我试过有没有。我的印象是,这个链接不会在页面之间发生变化,因此循环会在行中添加下一个数字。仍然不确定循环是如何工作的。但是我试图从 pg-2 开始,然后是 pg-3,然后是 pg-4 等等。
标签: python python-3.x web-scraping