本文来源吾爱破解论坛
本帖最后由 ofk 于 2019-3-20 13:51 编辑 5.jpg (134.8 KB, 下载次数: 0)
下载附件
保存到相册
2.png (121.76 KB, 下载次数: 0)
下载附件
保存到相册
3.jpg (150.44 KB, 下载次数: 0)
下载附件
保存到相册
4.jpg (63.26 KB, 下载次数: 0)
下载附件
保存到相册
6.jpg (390.32 KB, 下载次数: 0)
下载附件
保存到相册
新人发个帖,以免被删了,哈哈哈。
首先,看看我们需要爬取得网站,
url:https://butian.360.cn/Reward/plan
使用fiddler抓包分析一波,开启浏览器代{过}{滤}理,点击公益厂商这个按钮:
可以看到链接为http://butian.360.cn/Reward/pub,向服务器请求了三个参数,一个s,一个p,一个token,再看看这个参数的含义,访问第二页看看,参数变化:
发现参数p的值发生了变化,变为2,所以p参数就是页码了,其他的参数就不用再了解了,知道了页码,就可以爬取不同页码的链接,
我们需要爬取的是域名,看看域名所在的地方:
这里有个cid参数,这个参数的值代表了某个厂商,把链接记下来:
https://butian.360.cn/Loo/submit?cid=xx
xx是需要自己去填入,填入后就可获得域名了。
xx在哪提取呢?看看
xx的值可在json数据中提取,
开始编写代码吧:
[Python] 纯文本查看 复制代码
#coding:utf-8 from urllib import request,parse import re url = "http://butian.360.cn/Reward/pub" data = { 's':1, 'p':1, 'token':'' } headers = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Cache-Control': 'max-age=0', 'Connection': 'keep-alive', 'Cookie': '你的cookie', 'Host': 'butian.360.cn', 'Referer': 'https://butian.360.cn/', 'Upgrade-Insecure-Requests': 1, 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 QIHU 360EE' } data = parse.urlencode(data).encode('utf-8')#对post请求参数进行url编码 changshang = request.Request(url, data = data, headers=headers, method='POST') respones = request.urlopen(changshang).read().decode('utf-8') #正则匹配需要的内容----cid值 parrtern = re.compile(r'\"company_id\":\"(\d*?)\"') text = parrtern.findall(respones) for i in range(len(text)): url = "https://butian.360.cn/Loo/submit?cid="+text[i] yuming = request.Request(url,headers=headers) respones = request.urlopen(yuming).read().decode('utf-8') #正则匹配需要的内容----域名和厂商 parrtern1 = re.compile(r'<span>厂商名称:.*?value="(.*?)"') parrtern2 = re.compile(r'<span>所属域名:.*?value="(.*?)"') text1 = parrtern1.findall(respones) text2 = parrtern2.findall(respones) print(text1[0]+'-----------'+text2[0])
先爬第一页看看:
7.jpg (145.83 KB, 下载次数: 0)
下载附件 保存到相册
成功爬取了一页的厂商域名,
现在改一下代码,让代码有一点交互性:[Python] 纯文本查看 复制代码
#coding:utf-8import re from urllib import request,parse import gzip #爬取公益厂商的id def get_Con(ye): url = "http://butian.360.cn/Reward/pub" data = { 's':1, 'p':ye, 'token':'' } data = parse.urlencode(data).encode('utf-8')#对post请求参数进行url编码 changshang = request.Request(url, data = data, headers=headers, method='POST') respones = request.urlopen(changshang).read().decode('utf-8') #正则匹配需要的内容----cid值 parrtern = re.compile(r'\"company_id\":\"(\d*?)\"') text = parrtern.findall(respones) # print(text) return text def get_Url(id): global count url = 'http://butian.360.cn/Loo/submit?cid='+id yuming = request.Request(url,headers=headers) respones = request.urlopen(yuming).read() #由于网页时gzip编码的,所以需要解码 f = gzip.decompress(respones).decode('utf-8') #正则匹配需要的内容----域名和厂商 parrtern1 = re.compile(r'<span>厂商名称:.*?value="(.*?)"') parrtern2 = re.compile(r'<span>所属域名:.*?value="(.*?)"') text1 = parrtern1.findall(f) text2 = parrtern2.findall(f) data = text1[0] + '------' + text2[0] # print(data) filename.write(data+'\n') count = count + 1 headers = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Cache-Control': 'max-age=0', 'Connection': 'keep-alive', 'Cookie': '你的cookie', 'Host': 'butian.360.cn', 'Referer': 'https://butian.360.cn/', 'Upgrade-Insecure-Requests': 1, 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 QIHU 360EE' } x = int(input('请输入开始页码:')) y = int(input('请输入结束页码:')) #创建一个文件 filename = open('butian.txt','a') count = 0 def main(): for i in range(x,y+1): id = get_Con(i) for i in id: get_Url(i) print("爬取了%d个"%(count)) print("------爬取完毕------") filename.close() if __name__ == "__main__": main()运行后就会在目录下生产一个butian.txt,里面是爬取的厂商域名
原本想使用多线程的,但是写完发现爬不到,并且卡死,所以就没有使用多线程。
可能是我的代码死锁了。
本代码没有cookie,所以cookie自己填入就可以了。有哪些不对的地方请各位大佬指出,学习学习!
版权声明:
本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。
- 上一篇: 【笔记】开个坑,记录自己的成长——目录篇
- 下一篇: python3 批量克隆git