当前位置: 首页 > wzjs >正文

html5 开发网站大理企业网站建设

html5 开发网站,大理企业网站建设,饥饿营销的十大案例,深圳网站建设三把火科技需求是将贴吧的【某个吧】里面【n页】的网页代码爬取下来,保存至本地 首先我们要思考这个贴吧爬虫的框架,要有方法可以构造url列表(就可以一次获取多个url),能请求获取相应,能把html保存到本地。 import …

需求是将贴吧的【某个吧】里面【n页】的网页代码爬取下来,保存至本地

首先我们要思考这个贴吧爬虫的框架,要有方法可以构造url列表(就可以一次获取多个url),能请求获取相应,能把html保存到本地。

import requestsclass TiebaSpider(object): # 初始化核心组件def __init__(self):  ....要有url要有headersdef 构造url列表(self):  passdef 获取响应(self):  passdef 保存(self):  passdef run(self):     '''主要业务逻辑'''#url列表#发送请求获取响应#保存if __name__ == '__main__':  TiebaSpider=TiebaSpider()TiebaSpider.run()



一、初始化核心组件

找到贴吧某个吧【lol吧】的url: https://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=450
pn是确定页面的参数,450/50=9,0是第1页,9是第10页。怎么获取【贴吧名字】,实例化对象的时候把参数写里面去,然后在初始化方法里面,加上tieba_name去获取传的名字。

#将变量 tieba_name 绑定到当前类的实例上,使其成为实例变量,作用域贯穿实例的生命周期
self.tieba_name = tieba_name self.start_url = 'https://tieba.baidu.com/f?kw='+tieba_name+'&ie=utf-8&pn={}'self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}



二、构造存放url列表的函数

需要构建一个空列表url_list = [] ,用来保存这10页的 url ,这些url的参数是需要我们提供的,并且拼接起来,所以要思考怎么获取【页数】,每一页是50条数据,所以第1页是050,第2页是150,依次类推用到range()方法,range是从0开始的,然后每一条的页数信息也拼接上,url就完整了。

format()的基本功能作用:将变量值填充到字符串的{}占位符中。

def get_url_list(self):# 构造URL列表url_list = []for i in range(10): #循环10次,也就是10页url_list.append(self.start_url.format(i*50))                                                        # print(url_list)  #检测url写对没return url_list  #然后返回url_list

run()函数里面也要调用这个 get_url_list()函数,把返回的url_list的值保存到变量url_list里面

#构造URL列表
url_list = self.get_url_list() #调用所以这个列表会保存到url_list里面



三、构造发送请求获取响应的函数

想要得到响应,用到的就是requests.get(url)方法,保存到response变量里面,用response.text 或者 response.content.decode()获取网页源代码内容【也就是html】,那我们的url怎么得到并能在这个函数里面使用?就需要在这个构造函数里面加一个参数url。

	def parse_url(self,url):print(url)# 发送请求,得到响应response = requests.get(url,headers=self.headers)response.encoding = 'utf-8'return response.text  #返回的值是网页代码

并且在run()里面要先循环存入 url_list 里面真实的 url 到 for循环的 变量url 里面,存的就是通过response.text获得的html代码,所以调用方法parse_url()保存到名为html的变量里面

#遍历 发送请求获取响应for url in url_list:  #循环列表里元素个数的次数,然后每次把列表里面的元素按顺序赋值给urlhtml = self.parse_url(url) #调用此方法传参url,所以方法里面要接受url,参数要加上url# print(html)page_num = url_list.index(url) + 1  #index()前面的对象要是列表,url只是列表里面的一个元素,是一个str类型

这个时候其实还没思考怎么传页数,后面再回头写page_num。现在也可以浅浅分析一下:因为在后面保存的时候,我需要页面的参数来命名【tieba_name-第i页.html】,所以这里的列表索引可以作为页数,比定义一个page_num = 0,然后用for…range 循环保存页数要高级,代码量也少些。index下标是从0开始,所以第1页就是 url_list.index(url) + 1 。注意index()括号里面写的是列表里面的这个元素对应的下标,所以括号里面是变量url。



四、构造保存html的函数

保存的时候我要知道【贴吧名】,【网页源代码】和【页数】,所以要把这些参数获取到。而【贴吧名 self.tieba_name】是初始化里面加了self.的实例变量,可以在任何构造函数里面使用或修改,故不需要在函数里传参(不需要在括号里面写参数名)。在函数括号里面加上【网页源代码】和【页数】这两个参数名即可。

补充:实例变量(self.变量名):
通过 self.变量名 定义的变量属于当前实例,作用域贯穿实例的生命周期。	  
其他方法也可以通过 self.变量名 访问或修改它。

保存的HTML名字是这个类型:“ tieba_name-第i页.html ”

def save_html(self,html,page_num):# 保存 tieba_name-第i页.htmlwith open(self.tieba_name+'-第'+str(page_num)+'页.html','w',encoding='utf-8') as f:f.write(html)

run() 方法里也要调用 save_html() 方法,因为 save_html() 方法 里面要获取【网页源代码】和【页数】,所以我们在调用 save_html() 方法 时候要传入 html , page_num 两个参数。

#保存
self.save_html(html,page_num) #调用此方法传参html,所以方法里面要接受html,参数要加上html。然后把page_num传给save_html()方法



五、爬虫整体代码


import requestsclass TiebaSpider(object): #集成object 面向对象def __init__(self,tieba_name):  #init# 初始化核心组件  #https://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=450   pn是页面,一页50条self.tieba_name = tieba_name  #这样才可以在别的方法里使用到传过来的tieba_name,以 self.tieba_name 变量来使用self.start_url = 'https://tieba.baidu.com/f?kw='+tieba_name+'&ie=utf-8&pn={}'self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"}def get_url_list(self):# 构造URL列表'''url_list = []for i in range(10): #10次10页url_list.append(self.start_url.format(i*50))                                                               # print(url_list) #检测url写对没return url_list  #然后返回url_list'''# 列表推导式(List Comprehension)是 Python 中一种简洁高效的构建列表的方式,可以替代显式的 for 循环和 append 操作。想要看结果也可以把推导式保存至变量,然后print出来return [self.start_url.format(i*50) for i in range(10)]def parse_url(self,url):print(url)# 发送请求,得到响应response = requests.get(url,headers=self.headers)response.encoding = 'utf-8'return response.text  #返回的值是网页代码def save_html(self,html,page_num):# 保存 tieba_name-第i页.html# print(page_num)with open(self.tieba_name+'-第'+str(page_num)+'页.html','w',encoding='utf-8') as f:f.write(html)def run(self):     #run方法'''主要业务逻辑'''#构造URL列表url_list = self.get_url_list() #调用所以这个列表会保存到url_list里面#遍历 发送请求获取响应for url in url_list:  #循环列表里元素个数的次数,然后每次把列表里面的元素按顺序赋值给urlhtml = self.parse_url(url) #调用此方法传参url,所以方法里面要接受url,参数要加上url# print(html)page_num = url_list.index(url) + 1  #index()前面的对象要是列表,url只是列表里面的一个元素,是一个str类型#保存self.save_html(html,page_num) #调用此方法传参html,所以方法里面要接受html,参数要加上html。然后把page_num传给save_html()方法# exit()  #循环第一次就退出if __name__ == '__main__':  #mainTiebaSpider = TiebaSpider('lol')  #实例化这个类  lol贴吧名TiebaSpider.run()

最终点击html实现的效果,动手尝试一下吧!
在这里插入图片描述


文章转载自:

http://mzKDb2kv.jcxzq.cn
http://j0I4V4uc.jcxzq.cn
http://hOCndqc9.jcxzq.cn
http://4T7GBLzs.jcxzq.cn
http://DFCk5pj2.jcxzq.cn
http://fvQ5DBxW.jcxzq.cn
http://F7stWuPP.jcxzq.cn
http://EuFKIjwB.jcxzq.cn
http://F6nLQ4kv.jcxzq.cn
http://ueqOv3of.jcxzq.cn
http://LLxgcYyK.jcxzq.cn
http://v10lHovL.jcxzq.cn
http://1PwHHX1V.jcxzq.cn
http://7E4rxhyg.jcxzq.cn
http://HwQIAkPY.jcxzq.cn
http://9mlY8eDT.jcxzq.cn
http://zyUdP9WW.jcxzq.cn
http://qcUvnSRm.jcxzq.cn
http://hgvv8cfA.jcxzq.cn
http://TlxqMMwh.jcxzq.cn
http://RQvEcLHO.jcxzq.cn
http://OdbQ6iPV.jcxzq.cn
http://ufKf9nuI.jcxzq.cn
http://2wEyKNGs.jcxzq.cn
http://mzoNoU8l.jcxzq.cn
http://ZhX6I2eh.jcxzq.cn
http://D9P1skDh.jcxzq.cn
http://v6zZdklt.jcxzq.cn
http://HKTzIwoz.jcxzq.cn
http://j1yWqwId.jcxzq.cn
http://www.dtcms.com/wzjs/769484.html

相关文章:

  • 阜阳市建设工程质量检测站网站如何查网站备案号
  • 学网站开发培训学校南宁手机模板建站
  • .net网站开发实训泰安网站建设个人工作室
  • 网站建设影音先锋网址网站开发图书管理系统
  • 深圳企业建站程序做网站 提要求
  • 网站黑链怎么做的衡水做wap网站建设
  • 厦门h5网站建设重庆建设汽车系统股份有限公司
  • 农业技术推广网站北京市住房及城乡建设网站
  • 网站建设的所有权百度一下百度搜索百度
  • 如何建立简单网站微信网站特征
  • 商场网站开发百度网盘怎么提取别人资源
  • 设计感强的网站wordpress卸载
  • 如何在网上做网站齐诺网站建设东莞网站建设做网站
  • 静态网站优化网络设计目标
  • 网站开发需要资质吗如何防止网站被采集
  • 常熟有做网站的网络公司吗建设部网站白蚁文件
  • 网站建设】vs2015 做网站
  • 网站开发数据库郑州前端培训机构
  • 制作网站需要wordpress个人智慧团建网站
  • 网站竞价词怎么做网络营销实务技能训练题答案
  • 做网站的公司搞什么活动h5的制作步骤
  • 肇庆网站seo沾化网站建设
  • world做网站百度收录不到我的网站
  • 开源企业建站系统php网络设计包括
  • 北京冬奥会网站制作素材基因数据库网站建设
  • 网上购物有哪些网站?哈尔滨建设公示
  • 网站管理制度建设的必要性公司画册
  • 如何在微信公众号里建设微网站小精灵网站在线做语文
  • 关于域名用于非网站用途设计师 推荐 网站
  • 专业国外建设网站网站页面html静态化