如何使用硒刮刮Whatsapp网站的元素

时间:2020-05-15 19:13:59

标签: python selenium web-scraping scrapy

让我简要介绍一下问题,我想根据自己的经验来抓取自己的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)

1 个答案:

答案 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,则意味着您已经用尽了所有会话列表。