以学校网站举例
1.首先需要的包如下:scrapy selenium mouse chromedriver.exe(注意要下载对应版本的chrome,链接:http://chromedriver.storage.googleapis.com/index.html)
安装方式:进入cmd 输入 pip install 包的名称 -i https://pypi.douban.com/simple
此处省略scrapy生成爬虫的方法,这个爬虫不需要scrapy也可以。
2.配置Chromedriver:
因为目的是要下载pdf,利用chrome浏览器中可以设置点击pdf,ppt链接时可以直接下载不打开这一特点,我们只要配置好Chromedriver,点击链接即可下载。
代码:
from selenium import webdriver
options = webdriver.ChromeOptions()
profile = {"plugins.plugins_list": [{"enabled": False, "name": "Chrome PDF Viewer"}],
"download.default_directory": "文件的存放路径"}
options.add_experimental_option("prefs", profile)
browser = webdriver.Chrome(executable_path="chromedriver.exe的位置",chrome_options=options)
3.登陆网站
这里以学校网站为例
进入网站登陆页面,f12并用查看器左边箭头定位输入用户名和密码的位置,右键复制xpath一般登陆页面比较固定,复制绝对路径就好。
使用send.keys()发送
login的方式有很多种,也可以找到那个键后send_keys(Keys.ENTER)
这里我用mouse包中的move,
from mouse import move,click
使用屏幕坐标查找工具定位log in 这个button,move(x,y),然后click()即可
屏幕坐标工具:
链接:https://pan.baidu.com/s/191BjQIjIwjcaTOyrSbwX6w
提取码:e2ih
4.分析爬取页面信息
登录后,就可以访问你想要爬取的页面了。
比如我进入这一个课程页面
定位到其中一个pdf对应的url,直接用css将对应class中所有的信息提取出来,然后用get_attribute('href)将所有url提取出来
5.分析爬取的url
但是我们还需要注意,有可能这个页面中这个属性中的url不一定都是pdf和ppt的,可能还有很多其他我们不需要的,这个时候就需要要筛选。需要我们观察url的结构,这里我是这样正则的,
观察到url的区别在于中间的出现resource的是我们需要的,其他的不需要
写出正则^.*?resource.*?$,然后如下
获得所有的url后,到这里就可以直接用for循环get所有的url了,然后定义一个main文件运行,程序会自动下载到第2步设置的目录里
这个爬虫最关键步骤还是第二步的配置,
我一开始使用wget包保存失败了,后来找资料在知道可以这样配置Chromedriver的pdf下载。
大概就是这样了,如果看完有帮助的话点个赞鸭,谢谢。