无法抓取 AliExpress HTML 元素
Cannot scrape AliExpress HTML element
我想从 aliexpress 抓取任意报价。我正在尝试使用 scrapy 和 selenium。我面临的问题是,当我使用 chrome 并在元素上执行 右键单击 > 检查 时,我看到了真实的 HTML 但是当我执行 右键单击 > 查看源代码 我看到了一些不同的东西 - HTML CSS 和 JS 乱七八糟。
据我了解,内容是异步提取的?我想这就是我在页面上找不到我要找的元素的原因。
我试图先使用selenium加载页面,然后获取我想要的内容但失败了。我正在尝试向下滚动以转到 reviews 部分并获取其 content
这是他们拥有的一些高级反机器人解决方案,还是我的方法有误?
我目前拥有的代码:
import scrapy
from selenium import webdriver
import logging
import time
logging.getLogger('scrapy').setLevel(logging.WARNING)
class MySpider(scrapy.Spider):
name = 'myspider'
start_urls = ['https://pl.aliexpress.com/item/32998115046.html']
def __init__(self):
self.driver = webdriver.Chrome()
def parse(self, response):
self.driver.get(response.url)
scroll_retries = 20
data = ''
while scroll_retries > 0:
try:
data = self.driver.find_element_by_class_name('feedback-list-wrap')
scroll_retries = 0
except:
self.scroll_down(500)
scroll_retries -= 1
print("----------")
print(data)
print("----------")
self.driver.close()
def scroll_down(self, pixels):
self.driver.execute_script("window.scrollTo(0, {});".format(pixels))
time.sleep(2)
通过浏览器 inspect 工具中 network 选项卡中的请求,您会发现评论来自 here 所以您可以改为抓取此页面。
我想从 aliexpress 抓取任意报价。我正在尝试使用 scrapy 和 selenium。我面临的问题是,当我使用 chrome 并在元素上执行 右键单击 > 检查 时,我看到了真实的 HTML 但是当我执行 右键单击 > 查看源代码 我看到了一些不同的东西 - HTML CSS 和 JS 乱七八糟。
据我了解,内容是异步提取的?我想这就是我在页面上找不到我要找的元素的原因。
我试图先使用selenium加载页面,然后获取我想要的内容但失败了。我正在尝试向下滚动以转到 reviews 部分并获取其 content
这是他们拥有的一些高级反机器人解决方案,还是我的方法有误?
我目前拥有的代码:
import scrapy
from selenium import webdriver
import logging
import time
logging.getLogger('scrapy').setLevel(logging.WARNING)
class MySpider(scrapy.Spider):
name = 'myspider'
start_urls = ['https://pl.aliexpress.com/item/32998115046.html']
def __init__(self):
self.driver = webdriver.Chrome()
def parse(self, response):
self.driver.get(response.url)
scroll_retries = 20
data = ''
while scroll_retries > 0:
try:
data = self.driver.find_element_by_class_name('feedback-list-wrap')
scroll_retries = 0
except:
self.scroll_down(500)
scroll_retries -= 1
print("----------")
print(data)
print("----------")
self.driver.close()
def scroll_down(self, pixels):
self.driver.execute_script("window.scrollTo(0, {});".format(pixels))
time.sleep(2)
通过浏览器 inspect 工具中 network 选项卡中的请求,您会发现评论来自 here 所以您可以改为抓取此页面。