您的位置:首页 > 编程语言 > Python开发

Python简单知乎爬虫--爬取页面的图片并下载到本地

2016-10-07 14:33 966 查看
写了一个小爬虫,其实也算不上爬虫,只是抓取了页面的图片。这里主要是BeautifulSoup解析HTML源码,非常的方便啊,简直是神器,之前一直是使用正则表达式去解析非常痛苦啊!!!!


这里是BeautifulSoup的中文文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/

代码详细见注释,解释的非常清晰了。以后再慢慢加一些功能吧

最后附上我的这个小项目的github地址:https://github.com/qq1367212627/spider

原文链接:http://blog.csdn.net/qq_24489717/article/details/52653186

[python]
view plain
copy

print?





#coding=utf-8  
  
import urllib2  
from bs4 import BeautifulSoup  
import os  
import re  
  
  
url="https://www.zhihu.com/question/36390957"#指定的URL  
  
  
def download(_url,name):#下载函数  
    if(_url==None):#地址若为None则跳过  
        pass  
    result=urllib2.urlopen(_url)#打开链接  
    #print result.getcode()  
    if(result.getcode()!=200):#如果链接不正常,则跳过这个链接  
        pass  
    else:  
        data=result.read()#否则开始下载到本地  
        with open(name, "wb") as code:  
            code.write(data)  
            code.close()  
  
  
res=urllib2.urlopen(url)#打开目标地址  
respond=res.read()#获取网页地址源代码  
  
count=0#计数君  
soup=BeautifulSoup(respond)#实例化一个BeautifulSoup对象  
lst=[]#创建list对象  
  
for link in soup.find_all("img"):#获取标签为img的内容  
    address=link.get('data-original')#获取标签属性为data-original的内容,即图片地址  
    lst.append(address)#添加到list中  
  
s=set(lst)#去重  
for address in s:  
    if(address!=None):  
        pathName="E:\\2333\\"+str(count+1)+".jpg"#设置路径和文件名  
        download(address,pathName)#下载  
        count=count+1#计数君+1  
        print "正在下载第:",count  



#coding=utf-8

import urllib2
from bs4 import BeautifulSoup
import os
import re

url="https://www.zhihu.com/question/36390957"#指定的URL

def download(_url,name):#下载函数
if(_url==None):#地址若为None则跳过
pass
result=urllib2.urlopen(_url)#打开链接
#print result.getcode()
if(result.getcode()!=200):#如果链接不正常,则跳过这个链接
pass
else:
data=result.read()#否则开始下载到本地
with open(name, "wb") as code:
code.write(data)
code.close()

res=urllib2.urlopen(url)#打开目标地址
respond=res.read()#获取网页地址源代码

count=0#计数君
soup=BeautifulSoup(respond)#实例化一个BeautifulSoup对象
lst=[]#创建list对象

for link in soup.find_all("img"):#获取标签为img的内容
address=link.get('data-original')#获取标签属性为data-original的内容,即图片地址
lst.append(address)#添加到list中

s=set(lst)#去重
for address in s:
if(address!=None):
pathName="E:\\2333\\"+str(count+1)+".jpg"#设置路径和文件名
download(address,pathName)#下载
count=count+1#计数君+1
print "正在下载第:",count
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: