Python培训
美国上市Python培训机构

400-111-8989

热门课程

python爬虫抓取入门教程,适合python编程新手

  • 发布:Python培训
  • 来源:知识
  • 时间:2017-07-20 16:22

首先,新人,你们语法上一定要整清楚,特别是缩进。python跟java.net不一样的是没有大括号区分代码块,而是用缩进行。来区分。所以这块没明白,就先别急着动手弄。等语法上琢磨的差不多了,大概的if会写,函数会写。简单的爬虫基本就能实现了。我爬的是一个贴吧搞笑图片的帖子。各种表情包,也会方便以后斗图,哈哈。


这是需要导入的包,我这是python3 的,python2 的导包会有区别。前面两个没啥可说的,后面的两个是我为了写随机数引得,这个随机数有啥用,等下再说。然后就是需要获取网页源代码。

def getHtml(url):page = urllib.request.urlopen(url)html = page.read()return html

然后加上咱们需要爬取的网址,因为我们是多页爬取,不同网页参数不同,我们需要爬取的帖子,只有pn参数在变化,所以用for循环,很快就能拿到每页的url。

for i in range(15):#多少页你写多少就行了 i=i+1# ------ getHtml()内输入任意帖子的URL ------ url='(i) html = getHtml(url) # ------ 修改html对象内的字符编码为UTF-8 ------ html = html.decode('UTF-8')

取到图片,这里需要用到正则表达式,说实在,网上有很多这种表达式,仿照着写就行了。这是根据网页源代码其中图片参数来的。想套代码的这块一定要注意哦。

def getImg(html): # ------ 利用正则表达式匹配网页内容找到图片地址 ------ reg =r'class="BDE_Image" src="(.+?\.jpg)"' imgre = re.compile(reg); imglist = re.findall(imgre, html) return imglist

最后就是获取所有图片了,这里就提到了前面的随机数。我当时写完多页爬取后,出现了很烦的问题。就是我存完第一页,再存取第二页,第二页图片会覆盖第一页的。想半天才发现是循环下载的图片名相同,所以导致被覆盖。然后我就用了最无脑的办法。给图片名加随机字符串。总算实现了400多张搞笑图片的下载(大神都是每页建不同文件夹的-。-!)

imgList = getImg(html) for imgName in imgList print imgName imgName = 0 for imgPath in imgList: #------ 这里最好使用异常处理及多线程编程方式 ------ salt = ''.join(random.sample(string.ascii_letters + string.digits, 2))#防止因为图片重名被覆盖,定义一个随机字符串,加到图片名上 print(imgPath) f = open("pic/"+salt+str(imgName)+".jpg", 'wb') f.write((urllib.request.urlopen(imgPath)).read()) f.close()imgName =imgName+1 print("已经下载全部图片!")

我这个帖子页数不是太多,所以速度上还能接受,如果爬取大的帖子,几百页的,最好用多线程处理。这样会快上很多。


预约申请免费试听课

怕钱不够?可就业挣钱后再付学费!    怕学不会?助教全程陪读,随时解惑!     担心就业?一地学习,可全国推荐就业!

上一篇:使用Python语言进行机器学习,这些工具与库你该知道
下一篇:2017开发者生态报告:Python 是多人想尝试的语言

Python培训线上和线下的区别

不懂pandas,你怎么Python语言进行机器编程​?

了解Python语言的2D绘图库​Matplotlib,才能绘制出专业图像!

Python培训干货分享|不可不知的Python 爬虫工具

选择城市和中心
贵州省

广西省

海南省