爬取百度贴吧某帖子的所有照片

#coding=utf-8
import random
import requests
import urllib.request as urllib
from lxml import etree
from bs4 import BeautifulSoup

user_agent_list = ["Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 ",
            "(KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",  
            "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11", 
            "(KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",  
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6", 
            "(KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",  
            "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6",
            "(KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",  
            "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 "  
            "(KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",  
            "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5", 
            "(KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",  
            "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5", 
            "(KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",  
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 "  
            "(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",  
            "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3",  
            "(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",  
            "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 "  
            "(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",  
            "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3", 
            "(KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",  
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3", 
            "(KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",  
            "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3",
            "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",  
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3",  
            "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",  
            "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3", 
            "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",  
            "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3", 
            "(KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",  
            "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24",  
            "(KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",  
            "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 ", 
            "(KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",]


class Crawler(object):
    index = 1
    def __init__(self,start_url):
        self.start_url = start_url

    @staticmethod
    def request(url, **kwargs):
        try:
            page = requests.get(url,**kwargs)
            return page.text
        except:
            return ''
        
    @property   
    def get_max_page(self):
        html = self.request(self.start_url)
        html = etree.HTML(html)
        pages = html.xpath('//li[@class = "l_reply_num"]//@max-page')
        max_page,*_ = pages
        return int(max_page)
     

    
    def get_all_urls(self,max_page):
        for i in range(1,max_page + 1):
            yield (self.start_url + '?pn={}'.format(i))

    @classmethod
    def get_imgs(cls,html):
        soup = BeautifulSoup(html, 'html.parser')  
        img_urls = soup.find_all('img', class_='BDE_Image')
        for img in img_urls:
            print ("正在下载第{}张图片".format(cls.index))
            urllib.urlretrieve(img.get("src"),r'D:\pic\{}.jpg'.format(cls.index))
            cls.index += 1
            
    
    def run(self):
        max_page = self.get_max_page
        urls = self.get_all_urls(max_page)
        for url in urls:
            User_Agent = random.choice(user_agent_list) #伪装一下
            headers = {'User-Agent':User_Agent}
            html = self.request(url,headers = headers)
            self.get_imgs(html)
           
if __name__=='__main__':
    start_url   = "https://tieba.baidu.com/p/3881236527"   #可以换
    crawler = Crawler(start_url)
    crawler.run()


   

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可 6私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值