关于用selenium爬虫爬取带有下拉框的网站无法爬取到文本的问题

目标网站是:https://wp.m.163.com/163/page/news/virus_report/index.html?_nw_=1&_anw_=1

我原先的想法是:

url = "https://wp.m.163.com/163/page/news/virus_report/index.html?_nw_=1&_anw_=1"
browser = Firefox()
browser.get(url)
internal = browser.find_elements_by_xpath('//div[@class="tit"]')
 print(internal.txt)

然后经过测试发现xpath没毛病但是就说显示不出来文本内容。在网上翻阅了好久发现原因是因为这种属于隐藏元素,再加上属于动态加载的内容,无法直接显示。解决办法是将它完全展开后再进行爬取:

url = "https://wp.m.163.com/163/page/news/virus_report/index.html?_nw_=1&_anw_=1"
browser = Firefox()
browser.get(url)
button = browser.find_element_by_xpath('//div[@class="more_news"]')
#完全展开新闻
browser.execute_script("arguments[0].click();",button)
browser.execute_script("arguments[0].click();",button)
browser.execute_script("arguments[0].click();",button)
internal = browser.find_elements_by_xpath('//div[@class="tit"]')
for i in internal:
    print(i.get_attribute('textContent'))#显示隐藏元素

问题解决!自学真是不容易。。。。在这里写一篇文章防止后面的新手碰壁。


版权声明:本文为weixin_44556141原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。