好吧,不得不承认这周末又在家里宅了2天,每天都睡到太阳光刺眼的时候才起来.还记得出去的最远的距离是我小区大门口的小卖部.饥饿驱使着我拖着这一身的皮囊蠕动到超市,我的天呐,我都佩服我自己.浑浑噩噩的两天又过去了.
关于学习Python
关于学习Python我建议还是得系统的学习基础知识和一些必须知道的模块才行,不能一直这样东拼西凑的去学东西.可是对于我这种自制力不强的人,总要想办法每天产生一些内容才行(尽管这些内容不是我原创的,啊哈哈哈),要不然我会觉得我对不起我今天吃的饭(虽然我只吃了一顿饭而已)
周末在网上搜了一个小demo,是用来学习Python的,用它来实现QQ空间的批量点赞,代码量很少.于是便爬起来去学习一下.感谢楼主的代码,让我也能学习 在此附上源文章地址
开始撸代码
首先是按照源代码去抄,这没什么难度的.导入一下需要用的模块,需要注意的是看清大小写.
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
因为源代码不是很多,贴出来全部的代码
options = webdriver.ChromeOptions()
options.add_argument('user-agent=Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Mobile Safari/537.36')
browser = webdriver.Chrome('/usr/local/bin/chromedriver', options=options)
browser.get('https://qzone.qq.com/')
browser.implicitly_wait(2)
# 输入QQ号
browser.find_element_by_id('u').send_keys('这里填写你的QQ账号')
# 输入QQ密码
browser.find_element_by_id('p').send_keys('这里填写你的QQ密码')
browser.find_element_by_id('go').click()
# 等待10秒手动解决验证码
time.sleep(10)
while True:
try:
like = browser.find_element_by_xpath('//button[text()="赞"]')
top = int(like.location['y'])
browser.execute_script('document.documentElement.scrollTop={}'.format(top))
ActionChains(browser).move_to_element(like).click().perform()
except Exception as e:
browser.execute_script('window.scrollTo(0, document.body.scrollHeight)')
load_most = browser.find_element_by_xpath('//button[text()="加载更多"]')
print(load_most)
ActionChains(browser).move_to_element(load_most).click().perform()
以上是全部源代码,尽管完全看着别人的代码去写但是还有很多错误和问题.我把我遇见的问题罗列出来,以方便记
问题一
这是一个很低级蛋疼的问题,因为字母大小写的问题导致.修改为options = webdriver.ChromeOptions()
即可.因为ChromeOptions类名首字母是大写,群里也有人建议多用代码提示.tab键
问题二
这个问题比较复杂,百度了一下是说因为没有安装ChromeDriver的原因.解决办法也很简单啊,安装就行了,需要注意的是楼主写的关于ChromeDriver的路径需要修改为自己ChromeDriver的安装路径
安装方法:
- 首先查看自己的谷歌浏览器的版本需要下载哪个版本的(在此附上前辈写的博客)https://blog.csdn.net/huilan_same/article/details/51896672
- 然后百度搜到ChromeDriver的下载地址http://chromedriver.storage.googleapis.com/index.html根据自己的系统下载相应的版本
- 最后安装的时候,因为我用的Mac,所以跟Windows的安装路径不一致,
- 将解压的文件存在 mac下存放在/usr/local/bin目录下
- Windows是存放于Python的根目录下,这样就可以不用指明Chrome的位置直接引用webdriver.Chrome()。
- (当然,存放在其他环境变量位置也是可以的)这也是为什么源代码作者在写
browser = webdriver.Chrome('./chromedriver', options=options)
因为是在根目录下面,而我写的是browser = webdriver.Chrome('/usr/local/bin/chromedriver', options=options)
问题三
在运行到最后一页的时候,如果下一页加载不出来的话,会崩溃掉.这个问题还没处理,放到后边消灭吧.
最后,在这段代码中我需要学习的是selenium模块的使用,他的 功能强大之处还有很多,需要慢慢学.其实很多废话没什么可写的,也不知道自己为什么要写.
如果说要系统的学习Python的话,网络上有很多教程,完全可以跟着学习.问题是是否能坚持到最后,为了弥补我周末懒惰的内疚,我把我收集的学习资料分享一下吧.好让我也心安理得一下吧.
21天搞定Python爬虫:
链接: https://pan.baidu.com/s/1HvWysdrUGzWbRPEoKL4pyg 提取码: prhi
这个是我比较喜欢的教程,比较全面:
链接: https://pan.baidu.com/s/19flPVwkUdGC0iZQtCQKuNg 提取码: vyhi