Python简单的爬虫(一)
来源:互联网 发布:au是什么软件 编辑:程序博客网 时间:2024/06/10 22:56
本周上班没事就开始学了python,看了本入门,然后学习写了下简单的爬虫,记录下:
很菜,求大神提供下资源。。。如果大神碰巧看到
自己的理解:
爬虫就是下页面然后从里面取自己需要的信息,所以取信息的方法很重要,会影响到数据的准确性和爬取数据的时间。
用的Python3的版本
爬取整个页面的信息:
发一个请求浏览网页,给我们返回的是个html,python提供了获取这个页面所有字符串的方法,所以很简单:
import urllib.requestdef save_data(data): #保存成文件 save_path = 'D:/test/pythonTestDownload/lol.txt' f = open(save_path,'wb') f.write(data) f.close()url = 'http://lol.qq.com/'webPage = urllib.request.urlopen(url) data = webPage.read()s = data.decode('GBK') #lol官网是GBK的 其他页面可能是UTF-8print(s)save_data(data)
运行后可以看到控制台输出lol官网的html字符串(和右键网页查看源代码一样,但是js文件并没有。。。)
‘D:/test/pythonTestDownload/lol.txt’ 文件也生成,内容一样
有的网页对于上个方法爬取报403,表示阻止这样的请求,就需要我们自己添加请求头:
import urllib.requestdef save_data(data): save_path = 'D:/test/pythonTestDownload/lol.txt' f = open(save_path,'wb') f.write(data) f.close()webUrl = 'http://lol.qq.com/'webheader = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'}req = urllib.request.Request(url = webUrl,headers = webheader)webPage = urllib.request.urlopen(req)data = webPage.read()s = data.decode('GBK')print(s)# print(type(webPage))# print(webPage.geturl())# print(webPage.info())# print(webPage.getcode())save_data(data)
头部获取:可以f12找到对应请求然后CV大发:
大块红色的就是请求头,我加了最下面的一行,可以都加一下试试。
爬取图片
就是把上面取得的字符串里面图片的请求抠出来,然后一一下载:
import urllib.requestimport socketimport reimport sysimport osfrom urllib import responsefrom urllib.parse import urljointargetDir = 'D:/test/pythonTestDownload'def destFile(path): #下载文件位置生成 if not os.path.isdir(targetDir): os.mkdir(targetDir) pos = path.rindex('/') t = os.path.join(targetDir,path[pos+1:]) return tdef save_data(data): #保存全部html的字符串 save_path = 'D:/test/pythonTestDownload/test.txt' f = open(save_path,'wb') f.write(data) f.close()if __name__=='__main__' : weburl = 'http://lol.qq.com/' webheaders = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'} req = urllib.request.Request(url = weburl,headers = webheaders) webpage = urllib.request.urlopen(req) contentBytes = webpage.read() save_data(contentBytes) # print(contentBytes) # print(contentBytes.decode('GBK')) print(set(re.findall(r'(src=[^\s]*?(jpg|png|gif))',str(contentBytes))))GBK #正则抠出图片的请求 socket.setdefaulttimeout(5) #设置socket超时时间(防止一些下载卡住很长时间) for link,tail in set(re.findall(r'(src=[^\s]*?(jpg|png|gif))',str(contentBytes))): # print(link) link=link[5:] print(link) # print("----") # urljoin(response.url, link) # print(urljoin('http://lol.qq.com/', link)) try: urllib.request.urlretrieve(urljoin('http://lol.qq.com/', link),destFile(link)) #下载 except: print("失败:")
D:/test/pythonTestDownload路径下就可以看到下载的图片了。这儿的图片是查看网页源代码中存在的图片url,像在js里面的图片url就下载不到,这个以后再研究。。。网上大佬说需要配合js引擎,又可以学习的新东西哦。。。
阅读全文
0 0
- Python简单的爬虫(一)
- Python 3 爬虫(一) 简单的爬虫
- 简单 python 爬虫(一)
- Python爬虫学习(简单的模拟登陆(一))
- python初学者学习笔记(一)简单的爬虫
- python 网络爬虫(一) 简单demo
- python简单爬虫例子(一)
- Python开发简单爬虫(一)
- 简单python爬虫分析 (一)
- Python开发简单爬虫之爬虫介绍(一)
- python网络爬虫入门(一)——简单的博客爬虫
- Python简单的爬虫
- 简单的python爬虫
- 简单的Python 爬虫
- Python爬虫基础(一)--简单的url请求
- 爬虫程序的简单介绍(Python)
- Python爬虫(一)
- Python爬虫(一)
- 阿里云双11活动撸福利攻略云服务器篇 必买爆款
- Nginx源码剖析--HTTP模块配置信息的merge
- python3的format
- 最小支配集--pojPerfect Service
- WMTS 概述
- Python简单的爬虫(一)
- 如何在CentOS 7上安装Nginx,MySQL,PHP(LEMP)堆栈
- 打造自己的Ubuntu渗透利器--安装巡风扫描器
- Truncated incorrect DOUBLE value: 报错
- 受欢迎的牛bzoj1051(浅谈tarjan——(3))
- Fragment+ViewPage一步步实现底部导航栏。
- 在V4中如何使用局部时钟网络
- paxos算法结合Zookeeper介绍
- 浅谈在java中list集合的排序问题