最近想写个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,'//*