
基于Python的简单爬虫
发布日期:2021-05-07 22:59:46
浏览次数:17
分类:原创文章
本文共 2003 字,大约阅读时间需要 6 分钟。
PyThon简单爬虫
该程序第一部分对新浪上网页链接进行爬取,第二部分对京东上指定页面的图片进行爬取
import reimport urllib.requestdef getlink(url):#设置请求头 headers=("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0")#自定义opener opener = urllib.request.build_opener() #建立opener opener.addheaders = [headers] #附加请求头 #global opener urllib.request.install_opener(opener) #启用自定义opener#调用openerdirector file=urllib.request.urlopen(url)#读取数据 data=str(file.read())#建立正则式匹配网页连接 pat='(https?://[^\s)";]+\.(\w|/)*)' link=re.compile(pat).findall(data)#对连接进行去重 link=list(set(link)) return link#初始资源定位符url="http://news.sina.com.cn/"#获取连接linklist=getlink(url)大一连接for link in linklist: print(link[0]) import reimport urllib.requestimport os,statdef craw(url,page):#读取url的内容并存于html1 html1=urllib.request.urlopen(url).read() html1=str(html1)#第一个正则表达式,用于选取目标所在范围 pat1='<div id="J_selector".+?<div class="J_selectorLine s-line">' result1=re.compile(pat1).findall(html1) result1=result1[0]#第二个正则表达式,用于匹配目标 pat2='<img src="//(.+?width="102" height="36">)' imagelist=re.compile(pat2).findall(result1) x=1 file_path='D:/img' #文件存储路径 for imageurl in imagelist:#文件名 imagename=str(page)+'_'+str(x)#文件网络地址 imageurl="https://"+imageurl imageurl=imageurl.replace('" width="102" height="36">','')#读取文件格式 file_suffix=os.path.splitext(imageurl)[1] print(file_suffix)#完整文件路径 filename = '{}{}{}{}'.format(file_path,os.sep,imagename,file_suffix) print(filename) try:#如果不存在文件路径则建立文件 if not os.path.exists(file_path): os.makedirs(file_path)#下载文件 urllib.request.urlretrieve(imageurl,filename=filename)#错误处理 except IOError as e: print("IOError") except Exception as e: print("Exception") x+=1for i in range(1,10): url="http://list.jd.com/list.html?cat=9987,653,655&page="+str(i) craw(url,i)
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年03月21日 14时15分14秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java Swing JList:列表框组件
2021-05-07
jQuery中的动画
2021-05-07
狂神说MySQL01:初识MySQL
2021-05-07
1.2.3 项目、项目集、项目组合以及运营管理之间的关系
2021-05-07
光环和你一起迎接改版
2021-05-07
【△重点△】LeetCode - 4. 寻找两个正序数组的中位数——二分查找
2021-05-07
LeetCode - 5. 最长回文子串——字符串、动态规划
2021-05-07
全局锁和表锁 :给表加个字段怎么有这么多阻碍?
2021-05-07
事务到底是隔离的还是不隔离的?
2021-05-07
@Import注解---导入资源
2021-05-07
二分查找与插入排序的结合使用
2021-05-07
892 三维形体的表面积(分析)
2021-05-07
40. 组合总和 II(dfs、set去重)
2021-05-07
16 最接近的三数之和(排序、双指针)
2021-05-07
279 完全平方数(bfs)
2021-05-07
410 分割数组的最大值(二分查找、动态规划)
2021-05-07
875 爱吃香蕉的珂珂(二分查找)
2021-05-07
450 删除二叉搜索树中的节点(递归删除节点)
2021-05-07
桌面图标的自动排列图标
2021-05-07
第十一届蓝桥杯python组第二场省赛-数字三角形
2021-05-07