ฉันกำลังพยายามขูดไซต์ที่มีลิงก์ไปยัง Amazon ด้วย Python โดยใช้เฟรมเวิร์กเหล่านี้ - ซีลีเนียม ซุปที่สวยงาม
เป้าหมายของฉันคือการขูดรายละเอียดผลิตภัณฑ์ของ Amazon ต่อไปนี้ -> ชื่อ ราคา คำอธิบาย รีวิวครั้งแรก
แต่ฉันมีช่วงเวลาที่ยากลำบากกับตัวเลือกที่สวยงาม ฉันลองใช้หลายชุดผสมกัน แต่ฉันได้ผลลัพธ์เป็นโมฆะหรือข้อผิดพลาด น่าเสียดายที่ไม่ใช่แบบมืออาชีพ ปัญหาหลักคือ Beautiful Soup ไม่มีตัวเลือก XPath (AFAIK) ฉันควรย้ายไปที่ scrapy สำหรับงานนี้ หรือว่า Scrapy มีมากเกินไปสำหรับ Scraper ธรรมดานี้
นี่เป็นผลิตภัณฑ์แรกที่ฉันจะทำซ้ำในภายหลัง
from bs4 import BeautifulSoup
from selenium import webdriver
import time
driver.get('https://www.example.com')
driver.get('https://www.example.com')
first_article = driver.find_element_by_css_selector('div.button')
first_article.click()
html = driver.page_source
soup = BeautifulSoup(html, 'lxml')
# perform the operation
หลังจากนั้นฉันต้องเลือกเส้นทางที่เกี่ยวข้อง แต่จะทำอย่างไร? ใน Xpath จะเป็นเช่นนี้
Title = '//h1[@id="title"]//text()'
Price = '//span[contains(@id,"ourprice") or contains(@id,"saleprice")]/text()'
Category = //a[@class="a-link-normal a-color-tertiary"]//text()'
แต่รายละเอียดสินค้าและเส้นทางสู่การรีวิวครั้งแรกเท่านั้นที่ยังทำไม่ได้ ฉันคิดว่าตัวเลือก Beautiful Soup find_all จะไม่มีประโยชน์ที่นี่
html = driver.page_source soup.xpath('//*[@id="title"]') soup.xpath('//*[@id="title"]')
แต่ได้รับข้อผิดพลาดนี้ --› วัตถุ 'NoneType' ไม่สามารถเรียกได้ เหตุใดวัตถุจึงไม่สามารถเรียกได้ - person Abhijeet Pal   schedule 08.06.2018