让我简要介绍一下问题,我想根据自己的经验来抓取自己的whats-app网络数据。 不幸的是,Whats-App Web一次只能将其元素限制为12或10个元素,因此我对JavaScript并不熟悉,因此如何绕过Whats-App所做的限制,我如何获得所有必需的元素 < / p>
预先感谢您的帮助
我的代码:
def __init__(self):
#self.cookies = []
chrome_options = Options() #for now dont do --headless
chrome_options.add_argument("user-data-dir=C:\\Users\\Unknown\\AppData\\Local\\Google\\Chrome\\User Data")
chrome_options.add_experimental_option('detach', True) # so, browser keeps open dont close
chrome_path = which('chromedriver')
driver = webdriver.Chrome(executable_path=chrome_path, options=chrome_options)
driver.set_window_size(1920, 1080)
driver.get("https://web.whatsapp.com")
time.sleep(10)
recentList = driver.find_elements_by_xpath("//div[@class='_2wP_Y']")
print('\n\n RECENT LIST\n\n')
print(recentList)
#self.html = driver.page_source
def parse(self, response):
pass
#resp = Selector(text=self.html)
答案 0 :(得分:0)
因此,对于每个会话,div[@class='_2wP_Y']
似乎代表div
。并且 WhatsApp 在一个视口中最多显示这些类别的 16 个,您必须向下滚动才能进行较新的对话,但是{{1} }计数始终为 16 !我将建立一个迭代逻辑,其中您将这些类的每个 16 收集div[@class='_2wP_Y']
到WebElement
中,向下滚动事件,然后添加下一个 16 进入上一个列表。
list
您可以进一步扩展逻辑并添加一个仅比较两个recentList = driver.find_elements_by_xpath("//div[@class='_2wP_Y']")
for list in recentList :
driver.execute_script("arguments[0].scrollIntoView();", list )
并比较它们是否相等的函数。如果为true,则意味着您已经用尽了所有会话列表。