Python爬虫实现增加播客访问量的方法实现

  


  

  

世界1024年程序猿节日不加班,闲着没事儿……随手写了个播客访问量爬虫玩玩,访问量过万不是事儿! ! !每个步骤注释都很清晰,代码仅供学习参考!

  

——Nick.Peng   

  

Python3。x
  相关模块:请求,json, lxml, urllib, bs4, fake_useragent

  


  

        # !/usr/bin/env python   # - * -编码:utf - 8 - *   # @Author:尼克   # @Date: 2019-10-24 15:40:58   # @Last修改:尼克   # @Last修改时间:2019-10-24 16:54:31   进口随机   进口再保险   导入的时间   进口urllib   进口的要求      从bs4进口BeautifulSoup   从fake_useragent进口UserAgent      试一试:   从lxml进口etree   除了例外e:   进口lxml.html   #实例化一个etree对象(解决通过从lxml进口etree导包失败)   etree=lxml.html.etree      #实例化UserAgent对象,用于产生随机UserAgent   ua=UserAgent ()         类BlogSpider(对象):   ”“”   CSDN的博客访问量的增加。   ”“”      def __init__(自我):   自我。url=" https://blog.csdn.net/PY0312/article/list/{}”   自我。头={   “推荐人”:“https://blog.csdn.net/PY0312/?   “用户代理”:ua.random   }   自我。firefoxHead={   “用户代理”:“Mozilla/5.0 (Windows NT 10.0;Win64;x64;房车:Firefox 61.0)壁虎/20100101/61.0”}   自我。IPRegular=r”(((1 - 9) & # 63; \ d | 1 \ d {2} | 2 (0 - 4) \ d | 25 (0 - 5))) {3} ((1 - 9) & # 63; \ d | 1 \ d {2} | 2 (0 - 4) \ d | 25 (0 - 5))”      def send_request(自我,num):   ”“”   模拟浏览器发起请求   :param num: num   返回:html_str   ”“”   html_str=requests.get (self.url.format (   num),标题=self.headers) .content.decode ()   #打印(html_str)      返回html_str      def parse_data(自我,html_str):   ”“”   用于解析发起请求返回的数据   :param html_str:   返回:each_page_urls   ”“”   #将返回的html字符串转换为元素对象,用于xpath操作   element_obj=etree.HTML (html_str)   #打印(element_obj)      #获取每一页所有博客的url   each_page_urls=element_obj.xpath (   '//* [@ id=" mainBox "]/主/div [2]/div/h5//@href”)   #打印(each_page_urls)      返回each_page_urls      def parseIPList(自我,url=" http://www.xicidaili.com/"):   ”“”   爬取最新代理ip、西刺代理   注意:西刺代理容易被封,如遇到IP被封情况,采用以下两种方法即可解决:   方法一:请参考我上一篇博客《Python实现快代理IP爬虫》===比;喜欢研究的同学,可参考对接此接口   方法二:直接屏蔽掉此接口,不使用代理也能正常使用   :param url:“http://www.xicidaili.com/?   返回:代理IP列表ips   ”“”   ips=[]=urllib.request请求。请求(url,标题=self.firefoxHead)   响应=urllib.request.urlopen(请求)   汤=BeautifulSoup(回应,“lxml”)   tds=soup.find_all (“td”)   td的tds:   字符串=str (td.string)   如果re.search(自我。IPRegular字符串):   ips.append(字符串)   #打印(ips)   返回“诱导多能性”      def主要(自我、total_page loop_times each_num):   ”“”   调度方法   :param total_page:设置博客总页数   :param loop_times:设置循环次数   :param each_num:设置每一页要随机挑选文章数   返回:   ”“”   我=0   #根据设置次数,打开循环   虽然我& lt;loop_times:   #遍历,得到每一页的页码   j的范围(total_page):   #拼接每一页的url,并模拟发送请求,返回响应数据   html_str=自我。send_request (j + 1)      #解析响应数据,得到每一页所有博文的url   each_page_urls=self.parse_data (html_str)      #调用parseIPList随机产生代理IP、防反爬   # ips=self.parseIPList ()   #代理={“http”:“{}: 8080”.format (   # ips(随机的。randint (0, 40)])}      #遍历,每一页随机挑选each_num篇文章   x的范围(each_num):   #随机抽取每一页的一篇博文进行访问,防反爬   current_url=random.choice (each_page_urls)   状态=True如果requests.get (   其他current_url header=self.headers) .content.decode()错误的   打印(“当前正在访问的文章是:{},访问状态:{}”。格式(current_url、状态)   time . sleep(1) #延时1秒,防反爬   time . sleep(1) #延时1秒,防反爬   我+=1         if __name__==癬_main__”:   b=BlogSpider ()   bs。主要(200 3)#参数参照主要方法说明,酌情设置

Python爬虫实现增加播客访问量的方法实现