ฉันกำลังพยายามขูดเว็บไซต์ต่อไปนี้โดยใช้ Python 3, Selenium และ PhantomJS:
https://health.usnews.com/best-hospitals/search
ฉันจำเป็นต้องค้นหาช่องค้นหาและป้อนข้อความลงไป จากนั้นกด Enter เพื่อสร้างผลการค้นหา ด้านล่างนี้เป็น HTML ที่สอดคล้องกับช่องค้นหาที่ฉันพยายามค้นหา:
<div class="search-field-view">
<div class="block-tight">
<label class="" for="search-facet-city">
<input id="search-facet-city" autocomplete="off" name="city"
type="text" data-field-type="text" placeholder="City, State or ZIP"
value="" />
</label>
</div>
</div>
ด้านล่างนี้คือโค้ด Python 3 ของฉันที่พยายามค้นหาช่องค้นหานี้โดยใช้รหัส "search-facet-city"
def scrape(self):
url = 'https://health.usnews.com/best-hospitals/search'
location = 'Massachusetts'
# Instantiate the driver
driver = webdriver.PhantomJS()
driver.get(url)
driver.maximize_window()
driver.implicitly_wait(10)
elem = driver.find_element_by_id("search-facet-city")
elem.send_keys(self.location)
driver.close()
ฉันต้องขูดผลลัพธ์บางส่วนออกจากหน้าเมื่อป้อนข้อความลงในช่องค้นหา อย่างไรก็ตาม ฉันยังคงได้รับข้อผิดพลาด NoSuchElementException ไม่สามารถค้นหาองค์ประกอบช่องค้นหาได้แม้ว่าจะมีอยู่ก็ตาม ฉันจะแก้ไขปัญหานี้ได้อย่างไร?
403 Forbidden
แน่ใจเหรอว่าอ่านได้? - person John Gordon   schedule 27.10.2017wget
บนบรรทัดคำสั่ง เว็บไซต์อาจไม่อนุญาตไคลเอ็นต์ประเภทโรบ็อต ฉันลองใช้ URL ใน Chrome และโหลดหน้าเว็บแล้ว แต่ Mac ของฉันค้างโดยสิ้นเชิงเมื่อฉันพยายามดูแหล่งที่มา ดังนั้นฉันจึงไม่คิดว่าจะได้ไปที่หน้าเว็บนั้นอีก - person John Gordon   schedule 27.10.2017