首页 编程教程正文

百度贴吧图片爬取, 新人第一帖, 多多关照

piaodoo 编程教程 2020-02-22 22:02:43 837 0 python教程

本文来源吾爱破解论坛

本帖最后由 evanqqqq 于 2019-3-26 18:58 编辑

因为楼主比较喜欢看贴吧, 经常发现好玩的图片, 就用python写了一个爬虫来爬取图片. 可以自定义贴吧名和爬取的页数. 希望大佬们给些指点:$qqq
不同的贴吧需要的解析式可能会不同, 代码里30行和31行的解析式不确定,  如果30行的解析式不行, 改成31行的就可以了.     ----------------wkj1688在吗
[Python] 纯文本查看 复制代码

import requests
from lxml import etree
import time


class Baiduspider(object):
    def __init__(self):
        self.baseurl = 'https://tieba.baidu.com/'
        self.url = 'https://tieba.baidu.com/f?'
        self.headers = {'User-Agent':'Mozilla/5.0'}
    
    #获取帖子链接
    def getPageUrl(self,url):
        res = requests.get(url,headers=self.headers)
        res.encoding= 'utf-8'
        html = res.text
        parseHtml = etree.HTML(html)
        # 2. 解析对象调用xpath
        r1 = parseHtml.xpath('//div[@class="t_con cleafix"]/div/div/div/a/@href')
        for t in r1:
            self.getImaUrl(t)
        
    #获取帖子中图片的连接
    def getImaUrl(self,t):
        res = requests.get(self.baseurl+t,headers=self.headers)
        res.encoding= 'utf-8'
        html = res.text
        parseHtml = etree.HTML(html)
        # 2. 解析对象调用xpath.  两个解析式不确定, 第一个不能用就换第二个
        r2 = parseHtml.xpath('//div[@class="d_post_content j_d_post_content  clearfix"]/img[@class="BDE_Image"]/@src')
        #r2 = parseHtml.xpath('//div[@class="d_post_content j_d_post_content "]/img[@class="BDE_Image"]/@src')
        for i in r2:
            self.saveImage(i)
    
    #保存图片到本地
    def saveImage(self,i):
        print(i)
        res = requests.get(i,headers=self.headers)
        html = res.content
        # 这里自定义图片保存路径, 我是在d盘创建了一个image文件夹用来保存, 图片名就用time.time来定义了
        with open('D:\image\%s.jpg'% time.time(),'wb') as f:
            f.write(html)

    def workOn(self):
        key = input('请输入要爬取的贴吧名:')
        pn = int(input('请输入要爬取的页数:'))
        for x in range(1,pn+1):
            url = self.url + 'kw=' + key +'&pn=' + str((x-1)*50)
            print('================')
            print(url)
            self.getPageUrl(url)
    
if __name__=='__main__':
    spider = Baiduspider()
    spider.workOn()

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7407.html

搜索