欢迎光临我的博客 blog.ckj123.com
一天毛钊岚=。=想让我把杭电所有的课程爬下来,于是经过一天的构思和一天的查资料还是完成了=。=嘻嘻嘻嘻

我所使用的是selenium和re 模块就够了=。=
因为在爬取的时候我发现并不能用request,杭电官网的加载是用JavaScript来做请求的,发现request并不能一键爬取于是上网查找了selemium的资料写出来了=。=
下面是代码=。=,还有就是chromedriver一定要和Chrome的版本对应不然是不能实现的
import re
from seleniumimport webdriver
import time,os
url='http://jxgl.hdu.edu.cn/jxrwcx.aspx'
file=open('kechengmingchen.txt','w')
def openwindow():
driver = webdriver.Chrome(executable_path='C:\\Users\\assu\\PycharmProjects\\CTF\\学校课程\\chromedriver.exe')
# driver.maximize_window()
driver.get(url)
for iin range(1,50000):
yemian,yeshu=tiqu(driver.page_source)
print("第{}页".format(yeshu[0]))
# print(len(yemian),yemian,sep='\n')
for jin range(1,len(yemian)):
file.write(yemian[j][1]+'\n')
time.sleep(1)
if i <11:
xpath='//*[@id="DBGrid"]/tbody/tr[16]/td/a[{}]'.format(i)
else:
if i%10==0:
xpath ='//*[@id="DBGrid"]/tbody/tr[16]/td/a[{}]'.format(11)
else:
xpath ='//*[@id="DBGrid"]/tbody/tr[16]/td/a[{}]'.format(i%10+1)
try:
select=driver.find_element_by_xpath(xpath=xpath)
print("要按的页数"+select.text)
select.click()
except:
if yeshu==i+1:
continue
print("最后一页为第{}页".format(yeshu[0]))
break
def tiqu(text):
regax='(.*?)(.*?)(.*?)(.*?)(.*?)(.*?)(.*?)(.*?)(.*?)'
all_re=re.findall(regax,text)
reg='(.*?)'
arr_1=re.findall(reg,text)
return all_re,arr_1
openwindow()
file.close()
全部44行=。=还是挺简单的呢
结果是这样的=。=

后来跟o爷爷聊了一下杭电的所有课程爬取
他也给了我一份代码,他没有用selenium比我的快很多。我放到简书发现不行。。所以放我blog了
网友评论