python爬虫帮妈妈刷学分

  前些天老妈匆忙打电话过来说让我帮她用微信刷学分,具体做法是:关注一个公众主页,公众主页会推送文章,每篇文章最后有个“回复代码”,只要把这个代码回复给公众号,就认为你读完了该篇文章。

如上图,只要把ccq2回复给公众号即可,然而每读完16篇文章才能挣到1个学分,真是屮艸芔茻!!

接到这个任务我的第一反应就是用python爬虫把每篇文章最后的代码爬下来,毕竟最后一句话格式固定,不一样的只是文章代码,要是真读文章再回复代码完全来不及。

好了,直接在电脑端微信打开阅读记录链接http://jsxy.gsedu.cn/wx/course/courseSelect.xhtm?FromUserName=obK7fskWFpwRPTYswm7NipdP6sJM,里面是所有待读的文章:

既然是所有的文章,那网页源代码里必然有所有文章对应的超链接哈,嘿嘿,直接F12走起:

果然里面刺眼的的href好像在对我说,就是我啊,来咬(爬)我啊,哈哈哈。。。

红色标注的地方就是我要抓取下来的文章链接,这个正则表达式也很好写:      '<a href="(.*?)" >'                          其中(>*?)用贪心匹配把所有符合的网址匹配出来,再用函数把所有符合的网址装到一个list里面

re.compile(r'<a href="(.*?)" >',re.DOTALL)                 好了,分析完了,就该贴代码了:

import urllib.request as request
import urllib.parse as parse
import string
import re
import os
import urllib.error as error
import urllib

def fetch(baseUrl):  
  
    # 第1步:模拟浏览器发送请求  
    response = urllib.request.urlopen(baseUrl)    
    data = response.read()
    data=data.decode('utf-8')    
  
    # 第2步:页面返回后,利用正则表达式提取想要的内容  
    nameList=[]  
    nameList = re.compile(r'<a href="(.*?)" >',re.DOTALL).findall(data)  
  
    # 第3步:返回在页面上析取的“标题名”  
    return nameList

#######     执行    ########   
if __name__ =="__main__": 
    #要抓取的网页地址  
    url = "http://jsxy.gsedu.cn/wx/course/courseSelect.xhtm?FromUserName=obK7fskWFpwRPTYswm7NipdP6sJM"
    #存放到名字列表中  
    NameList = fetch(url)  
  
    # 输出 NameList  
    Length = len(NameList)  
    for i in range(0, Length):  
        print ('%d ref is:%s' %(i+1, NameList[i]))
with open('C:/pythoncode/1228/hehe.txt', 'w') as f:
	for i in range(0,Length):
		f.write("\n")
		f.write(NameList[i])

先让我喝口水,恩,抓完了,就喝一口水的时间!


如上图,共抓去了541个链接,满分学分才541/16=33个,老妈给我要求帮完成24个。


   与此同时,这些链接网址也被写到了txt文件里面:

简直不能更整齐!!!好的,既然所有的域名都搞到了,那就再把这些域名挨个分析咯,做法类似,就不描述了哈,当然,展示下最后爬取得文章代码:

最后541个域名解析写出结果的时间也就不到三分钟,哈哈,老妈一年的文章就这样读完了!!

写在最后:

其实这里面并没有开多线程,多线程并发处理这些域名还能更快,只能以后试试咯!

程序员适合用完成一些程序,让大家免于单调重复的劳动,比如上面说的”刷学分“,而不是修电脑,装软件,刷机啊啊啊啊啊啊。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值