当我还在acm的时候就很想写这个爬虫了
后来学了python 学了点网页请求方式 然后就来写这个爬虫了
为了记录自己学习的过程写了这一系列博客
首先讲讲我的思路
第一步当然是登陆 和 cookie处理问题了
使用一个http.cookiejar库 自己创建一个CookieJar对象 把他当参数 构建一个opener对象
安装这个opener为全局对象 这样在我们后面的urlopen过程中都会使用这个opener了 这种方法很好的解决了cookie的问题
def login(self):
requ = urllib.request.Request(url = self.login_url , data = self.login_data , headers = self.headers)
cjar = http.cookiejar.CookieJar()#创建一个CookieJar对象
#使用HTTPCookieProcessor创建一个cookie处理器 并且用它当参数构建opener对象
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cjar))
#把opener安装为全局
urllib.request.install_opener(opener)
file = opener.open(requ)
#with open("test.html" , "wb") as fhandler:
# fhandler.write(file.read())
我刚开始是准备在csdn上搜索 hdu + 题号 的方式然后爬csdn自带搜索引擎的结果来交题的
先贴一个我从csdn上爬代码的关键部分代码吧 大概是这样的
#这里直到while都是找到题解地址部分
#接下来的部分是在csdn上搜索这个问题的解
urlofquestion = "https://so.csdn.net/so/search/s.do?q=nyoj+%2B+"
value = ans
URLENcode = urllib.parse.urlencode({"value" : ans})
urlofquestion += URLENcode[6:]#因为vlaue= 的长度为6 所以用了这个切片
urlofquestion += "&t=blog&o=&s=&l="
#print("我们准备在这个页面搜索题解