zoukankan      html  css  js  c++  java
  • python爬虫训练——正则表达式+BeautifulSoup爬图片

    这次练习爬 传送门 这贴吧里的美食图片。

    如果通过img标签和class属性的话,用BeautifulSoup能很简单的解决,但是这次用一下正则表达式,我这也是参考了该博主的博文:传送门

    所有图片的src地址前面都是相同的,所以根据这个就可以筛选出我们想要的图片了。也就是在匹配时不用class属性的值,而是用正则表达式去匹配src的值。

     1 from urllib import request
     2 from bs4 import BeautifulSoup
     3 import re
     4 
     5 def get_page(url, tot_page):
     6     url_list = []
     7     for i in range(1,tot_page):
     8         new_url = re.sub(('=(.*)'),'%s%s' %('=',i), url)
     9         url_list.append(new_url)
    10     return url_list
    11 
    12 
    13 if __name__ == '__main__':
    14     url = 'http://tieba.baidu.com/p/4792769205?pn=1'
    15     path = 'D:pythonproject爬虫结果'
    16     count = 0
    17     url_list = get_page(url, 4)
    18     for url in url_list:
    19         print(url)
    20         page = request.urlopen(url).read().decode()
    21         soup = BeautifulSoup(page, 'lxml')
    22         regex = re.compile("http://imgsrc.baidu.com/forum/w%3D580/sign=.+.jpg")
    23         pic_list = soup.findAll('img', {'src': regex})
    24         for pic in pic_list:
    25             pic = pic['src']
    26             request.urlretrieve(pic, '%s/%s.jpg' % (path, count))
    27             count += 1

    我就爬了3页的图片:

  • 相关阅读:
    发呆发呆发呆发呆发呆发呆发
    大众捷达看想吃 v 觉得分开才相聚离开都出现
    yjggj
    test4
    test3
    test2
    test1
    Java并发之线程池ThreadPoolExecutor源码分析学习
    Java并发之AQS同步器学习
    ThreadLocal和ThreadLocalMap源码分析
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/8341019.html
Copyright © 2011-2022 走看看