• 继续修改,爬虫贴吧,上次的每次只取一个图片.


    from urllib.request import urlopen
    from bs4 import BeautifulSoup
    from urllib.request import urlopen
    import re
    import random
    import os
    import urllib.request
    #把base_url随便改成别的贴吧的吧的首页都行
    base_url = "https://tieba.baidu.com/f?"
    num=5000
    for i in range(50):#爬取50页
           #这地方写的不对,因该用正则提取后面的pn
           #下面在加一个判断,是否你贴入的base_url是首页.因为首页后面没有&pn处理不同:
           a=re.findall(".*&pn",base_url)
           shumu=50*i
           if a==[]:
                  #那么我们就加入&pn=...
                  url=base_url+'&pn='+str(shumu)
           else:
                  url=base_url+str(shumu)
           
           
           #把url地址里面的东西读出来给soup
           try:#用try来解决有时候编码utf-8不好使的问题
            html = urlopen(url).read().decode('utf-8')
           except Exception:
                  continue
           soup = BeautifulSoup(html, features='lxml')
           #把地址里面的每一个页码地址都取出来
           #这个正则表达式表示开头必须是/p的,里面有/p后很多数字的,(?=)这个叫断言,利用这个来加限制条件
           #继续搞一个贪婪匹配和非贪婪匹配的区别 .*?5表示非贪婪匹配   235235会出来2个235    .*5是贪婪匹配235235会出来235235
           sub_urls = soup.find_all("a", {"target": "_blank", "href": re.compile("(?=^/p)/p/d*")})
           
           
           for i in range(len(sub_urls)):
            a=sub_urls[i]['href']#利用这个方式提取一个网址里面的href
            
            
            #这里面每一个a就是要爬取的网页
            #下面开始爬取他的图片
            baseurl='https://tieba.baidu.com'
            url=baseurl+str(a)
            try:
             html = urlopen(url).read().decode('utf-8')
            except Exception:
                  continue
            soup = BeautifulSoup(html, features='lxml')
            
            #soup里面进入标签的方法是.标签就行了所谓标签就是<a>...<a>这里面东西就是a标签里面的内容
            
            tupian=soup.cc
    
            #继续加一个功能如果需要保存到的dir不存在就生成,存在就pass
            aaa=os.path.exists('d:/tupian')
            if aaa!=True:
                   os.makedirs('d:/tupian')
            #先设置一下保存的位置:
            dir=r'D:	upian'
            
    #这个目录先自己手动创立一下
            #然后直接find img get src但是有的cc里面没有图片
            print (11111111)
            
            try:
              if tupian!=None and tupian.find_all('img')!=None:
                     img_srcall = tupian.find_all('img')
                     #注意find的话后面可以直接.get  find_all后面不能直接.get
    
                     
                     print (img_srcall)
                     print ('**********')
                     print (333999)
                     pic_name=str(num)
                     print (img_srcall)
                     for _ in img_srcall:
                     #这个pic_name还必须要写一个拓展名
                            img_src=_.get('src')
                            pic_name=pic_name+img_src[-4:]
                            pic_name=os.path.join(dir,pic_name)
                            urllib.request.urlretrieve(img_src, pic_name)
                            
                            num+=1
            except Exception:
                  continue
            
            
              
    
           
    ##
    ##
    ##      
    ##his = ["/item/%E9%B8%A1%E7%9F%A2%E8%97%A4/931175?fromtitle=%E9%B8%A1%E5%B1%8E%E8%97%A4&fromid=374872"]
    ##
    ##for i in range(200):
    ## url = base_url + his[-1]
    ##
    ##print (77777777)
    ##
    ##html = urlopen(url).read().decode('utf-8')
    ##print (8888888888)
    ##soup = BeautifulSoup(html, features='lxml')
    ##print (9999999)
    ##
    ##print(i, soup.find('h1').get_text(), ' url: ',base_url+ his[-1])
    ##
    ### find valid urls
    ##sub_urls = soup.find_all("a", {"target": "_blank", "href": re.compile("(?=^/item)/item/(%.{2})+$")})
    ##
    ##
    ##print ('爬到了'+str(i+1))
    ##if len(sub_urls) != 0 :
    ##
    ## his.append(random.sample(sub_urls, 1)[0]['href'])
    ##else:
    ## if len(his)==1:
    ##  pass
    ## else:
    ### no valid sub link found
    ##  his.pop()
  • 相关阅读:
    死工资的缓慢呆板已不能适合这个新型的商业社会。
    java获取前一天时间SimpleDateFormat,java判断某个时间段
    设置 DNS,防止 DNS 污染,清除 DNS 缓存ipconfig /flushdns
    win7 怎么设置开机直接进入桌面? netplwiz 命令
    AWS免费云服务套餐申请步骤及常见问题
    阿里云自定义镜像可以免费保存,ECS实例到期后自定义镜像手动快照不会被删除
    php获取字符串长度函数strlen和mb_strlen
    PHP HTML混写,PHP中把大块HTML文本直接赋值给字符串变量的方法
    人工智能跟脑神经科学没有关系。没有出差错的机会,就没有进化的可能。要想自己把事情做成功,就需要弄清楚事物的本质。
    python GIL 全局锁,多核cpu下的多线程性能究竟如何?
  • 原文地址:https://www.cnblogs.com/zhangbo2008/p/8448023.html
Copyright © 2020-2023  润新知