python爬虫批量下载美女吧美女图片 - Go语言中文社区

python爬虫批量下载美女吧美女图片


前言:

        昨天和前天没有更新博客一方面的原因是我给一位学姐改进了一下毕业设计-----俄罗斯方块(C语言版),另一方面的原因就是我想利用xpath去抓取特定标签,但学习一天没有抓到,无奈只好用正则表达式去进行爬取,对于我来说正则表达式似乎要简单一些,也可能是我还没有学会xpath的抓取方法。话不多说,直接贴成果。

环境:win7 、pycharm、python2

所用到的库:urllib2 、 re、urllib、time 、lxml

代码如下:

TieBa_BeautifulGirl.py

#coding:utf-8
import urllib2
import urllib
import re
import lxml.etree
import time
 #获取每一页的链接
def geturlpage(name):
    url = "https://tieba.baidu.com/f?"
    word = {"kw": name}  # 贴吧的名字
    word = urllib.urlencode(word)  # 编码成字符串
    url = url + word  # 拼接url
    page = 20  # 假设要爬取贴吧前20页内容
    urlpage = []  # 设置一个空列表用于存放前20页链接
    #https://tieba.baidu.com/f?kw=%E7%BE%8E%E5%A5%B3&pn=0
    #print url
    #将生成的链接添加到urlpage列表中
    for i in range(0,page):
        urlpage.append(url+str(i*50))
    return urlpage
#获取每个页面中的帖子的链接
def getpageurl(url):
    # 模拟浏览器头部
    headers = {
        "User-Agent": "Mozilla/5.0(WindowsNT6.1;rv:2.0.1)Gecko/20100101Firefox/60.0.1"
    }
    request = urllib2.Request(url, headers=headers)  # 发起请求
    request.add_header("Connection", "keep-alive")  # 一直活着
    response = urllib2.urlopen(request)  # 打开请求
    data = response.read()  # 读取数据
    # print data
    mystr = "<ul id="thread_list" class="threadlist_bright j_threadlist_bright">([sS]*?)<div class="thread_list_bottom clearfix">"#抓取表格
    regex = re.compile(mystr, re.IGNORECASE)
    mylist = regex.findall(data)
    #print mylist
    table = mylist[0]
    mystr = "href="/p/(d+)"#二次用正则表达式筛选选择恰当数据
    regex = re.compile(mystr, re.IGNORECASE)
    urltitlelist = regex.findall(table)
    # print mylist
    urllist = []
    for title in urltitlelist:
        urllist.append("http://tieba.baidu.com/p/" + title)
    return urllist

def downimg(url):
    # 模拟浏览器头部
    headers = {
        "User-Agent": "Mozilla/5.0(WindowsNT6.1;rv:2.0.1)Gecko/20100101Firefox/60.0.1"
    }
    request = urllib2.Request(url, headers=headers)  # 发起请求
    request.add_header("Connection", "keep-alive")  # 一直活着
    response = urllib2.urlopen(request)  # 打开请求
    data = response.read()  # 读取数据
    mytree = lxml.etree.HTML(data)
    jpglist = mytree.xpath("//*[@class="BDE_Image"]/@src") #抓取图片(xpath)抓取方法
    return jpglist
    '''
     jpgnumbers = 10
    for jpgurl in jpglist:
        print "正在保存第"+str(jpgnumbers)+"图片......"
        urllib.urlretrieve(jpgurl, "jpg/" + str(jpgnumbers) + ".jpg")
        jpgnumbers += 1
    '''
   
#++++++++++++++++++++++++++++++++++++++++++++++++++
jpgnumbers = 0
    
urlpagelsit= geturlpage("美女")
for urlpage in urlpagelsit:
    print urlpage   #打印每一页的链接
    time.sleep(1)
    urllist= getpageurl(urlpage)
    for iurllist in urllist:
        print iurllist
        time.sleep(1)
        jpglist= downimg(iurllist)
        for jpgurl in jpglist:
            print "正在保存第" + str(jpgnumbers) + "图片......"
            urllib.urlretrieve(jpgurl, "jpg/" + str(jpgnumbers) + ".jpg")
            jpgnumbers += 1 
    

运行效果:

文件夹下爬取下的图片

中间在找图片位置的时候用的是xpath ,若有大佬知道怎么用xpath 提取贴吧表格的,还望留言。

后期还要用xpath写一个。


以上内容若有错误或用词不当,请留言指正,谢谢。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_36381299/article/details/80673802
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 22:39:01
  • 阅读 ( 962 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢