爬虫:爬取浙江某大学导师的一些信息

写在前面:
这是最简单的爬虫了吧,咱们大学也没什么恶心的反爬系统,不会说什么不换IP地址就不给爬(大前端和房源网真的搞得我头发都白了,现在回去爬一下,发现也就是换个IP地址的事情),但即使是这么简单的一个爬虫依旧耗了我两个小时。哎,还是不够熟练呀

不得不说日月光华的网课讲的很好,其中的条理,像内网页什么的,就是我这样一点天赋都没得的人都能慢慢弄明白。但是呢我的思想有些局限于网课了(也不能怪网课,怪我自己笨),下意识地认为自己爬不了一系列网页某些部分没有规律地情况。。。其实是大错特错了。。完全可以通过前置网页来获取内部网的信息呀!!!还好室友提醒了我一下,不然鬼知道我要走多少弯路。

其实代码还没有完全完成,还没有用正则表达式处理数据和将数据存入数据库中。。。不管了明天再搞

最气的是!!!!晚上的一个小时debug!!!我居然!!!是因为少加了一个括号!!!气得我当场去世,诶,我要是脑子清醒一点也不至于犯这种错了

8说了,写完博客就去来一把剑魔安慰一下我受伤的内心
下面是代码~完整版明天再贴上

import requests
from lxml import etree
import random
from string import punctuation
import re
import time

def download(url):
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'}
    time.sleep(1)
    r = requests.get(url,headers=headers)
    r.encoding='utf-8'
    return etree.HTML(r.text)

def spider_detail(list_url):
    selector = download(list_url)
    jianjie = selector.xpath('string(/html/body/div[2]/div/div[2]/div/div[1]/div[3]/div[1])')[0:].strip()
    lingyu = selector.xpath('string(/html/body/div[2]/div/div[2]/div/div[1]/div[5]/div[1])')[0:].strip()
    lianxi = selector.xpath('string(/html/body/div[2]/div/div[2]/div/div[1]/div[7]/div[1])')[0:].strip()
    bumen = selector.xpath('/html/body/div[2]/div/div[2]/div/div[2]/div[2]/p[1]/text()')[0]
    name = selector.xpath('/html/body/div[2]/div/div[2]/div/div[2]/div[2]/h3[1]/text()')[0]
    write_down(jianjie,lingyu,lianxi,name,bumen)

def write_down(jianjie,lingyu,lianxi,name,bumen):
    with open(name+'.txt','wt',encoding='utf-8')as f:
        f.write(jianjie+'\n')
        f.write(lingyu+'\n')
        f.write(lianxi+'\n')    
        print('正在下载   '+name+bumen)

def spider_url(total_url):
    selection = download(total_url)
    lists =  selection.xpath('//*[@target="_blank"]')
    x_url = []
    for list in lists:
        t_url = list.xpath('@href') 
        if list == lists[-1]:
            pass
        else:
            x_url.append('http://dsxxcx.zstu.edu.cn'+t_url[0])
    for i in x_url:
        spider_detail(i)


dict = {'理学院':14,"材料与纺织学院":11,"服装学院":5,"信息学院":6,"机械与自动控制学院":10,"建筑工程学院":5,"生命科学学院":7,"经济管理学院":7,"艺术与设计学院":6,"法政学院":3,"外国语学院":3,"文化传播学院":2,"马克思主义学院":3,"启新学院":2,"继续教育学院":2,"科技与艺术学院":2,"校外单位":6}
for x in dict:
    for i in range(1,dict[x]):
        spider_url('http://dsxxcx.zstu.edu.cn/master/index.php?r=site/college&college={}&page={}'.format(x,str(i)))





  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值