最近想写个TWITTER账号爬取程序,本以为很容易,没想到却碰到了不少坑。
1. TWITTER页面元素里ID是变化的。当你下来页面时候,用网页开发者工具查看,ID是变化的。前面是ID,ID后面紧跟一大串数字。当用selenium查找元素时候,会经常找不到。
2,当使用find_elements查找用户时候,本以为可用根据XPATH顺序查找到元素。结果发现连续爬取30个用户名称后,XPATH路径竟然也变化。用鼠标滑动时候。
3. classname 多个属性,而且重复次数多。导致查找到无效数据多。
附上改正后的部分源代码
browser.implicitly_wait(10) # 打开twitter,此处twitter已经登录 browser.get('https://twitter.com/') # 等待三秒 time.sleep(3) # 查找搜索框,不要最小化浏览器窗口,可用在输入关键后最小化浏览器窗口 searchele = browser.find_element(By.XPATH,'//*[@id="react-root"]/div/div/div[2]/main/div/div/div/div[2]/div/div[2]/div/div/div/div[1]/div/div/div/form/div[1]/div/div/div/label/div[2]/div/input') # print(searchele) # 输入搜索关键词,此处输入的是hello,可更换关键词 searchele.send_keys('h') # 回车,开始搜索 searchele.send_keys(Keys.ENTER) # 等待3秒 time.sleep(3) # 点击用户目栏目 userele = browser.find_element(By.XPATH,'//*