首页 > 编程语言 >Python爬虫需要哪些基础

Python爬虫需要哪些基础

时间:2023-05-04 14:12:34浏览次数:39  
标签:anchors 哪些 Python self number 爬虫 html anchor

Python爬虫是指使用Python语言编写程序,自动化地访问Web页面并抓取其中的信息。以下是Python爬虫的基础知识:

爬虫的工作原理:爬虫程序通过网络请求获取Web页面的HTML源码,然后使用正则表达式或解析器提取所需要的信息。

常用的爬虫库:Python中常用的爬虫库包括requests、BeautifulSoup、Scrapy等。

爬虫的流程:爬虫一般分为请求、解析和存储三个步骤。首先发送请求获取HTML源码,然后解析HTML源码,提取所需信息并存储到文件或数据库中。

爬虫的注意事项:爬虫需要遵守网站的规则,不能过度访问网站,否则可能会被封IP或者遭到其他惩罚。在编写爬虫时需要注意代码的可读性和可维护性。

爬虫的应用:爬虫可以用于数据分析、舆情监测、搜索引擎优化、数据挖掘等领域,甚至可以用于自动化测试等方面。

以上是Python爬虫的基础知识,如果要深入学习Python爬虫,需要掌握更多的技术和工具。

Note:

一:简单爬虫的基本步骤

1、爬虫的前奏:
    (1)明确目的
    (2)找到数据对应的网页
    (3)分析网页的结构,找到数据的位置

2、爬虫第二步:__fetch_content方法
    模拟HTTP请求,向服务器发送这个请求,获取服务器返回给我们的Html
    用正则表达式提取我们要的数据

3、爬虫第三步:__analysis
    (1)找到一个定位标签或者是标识符,利用正则表达式找到需要的内容:
    它的选择原则是:
    唯一原则、就近原则、选择父级闭合标签
    (2)再找到的内容中进一步提取需要的数据,可能多次提取

4、精炼提取到的数据
    利用lambda表达式替换for循环

5、处理精炼后的数据

6、显示处理后的数据

二、程序规范
    1.注释
    2.空行的利用
    3.函数大小10-20行
    4.写平级方法并用主方法调用,避免多级嵌套方法!

四、补充
    beautiful Soup, scrapy爬虫框架
    爬虫、反爬虫、反反爬虫
    ip 被封  代理IP

五、总结
    (1)加强对正则表达式的练习
    (2)加强对lambda表达式的练习!
    (3)锻炼面向对象的思维模式

Code:

1 """
 2 this module is used to spider data!
 3 """
 4 
 5 from urllib import request
 6 import re
 7 # 代替print的断点调试方法,特别重要!!!
 8 
 9 
10 class Spider:
11     """
12     this class is used to spider data!
13     """
14     url = 'http://jshk.com.cn'
15     root_pattern = '<div class="video-info">([\s\S]*?)</div>'     # 非贪婪模式
16     name_pattern = '</i>([\s\S]*?)</span>'
17     number_pattern = '<span class="video-number">([\s\S]*?)</span>'
18 
19     def __fetch_content(self):
20         """
21             this class is used to spider data!
22         """
23 
24         r = request.urlopen(self.url)   # 提取到html
25         html_s = r.read()
26         html = str(html_s, encoding='utf-8')
27 
28         return html
29 
30     def __analysis(self, html):
31         root_html = re.findall(self.root_pattern, html)     # list
32         # print(root_html[0])   # 第一次匹配的结果
33 
34         anchors =[]
35         for html in root_html:
36             name = re.findall(self.name_pattern, html)
37             number = re.findall(self.number_pattern, html)
38             anchor = {'name': name, 'number': number}
39             anchors.append(anchor)
40         # print(anchors[0])
41 
42         return anchors
43 
44     @staticmethod
45     def __refine(anchors):
46         i = lambda anchor: {'name': anchor['name'][0].strip(),  # 列表后面只有一个元素
47                             'number': anchor['number'][0].strip()
48                             }
49         return map(i, anchors)
50 
51     def __sort(self, anchors):      # 业务处理
52         anchors = sorted(anchors, key=self.__sort_seek, reverse=True)
53         return anchors
54 
55     @staticmethod
56     def __sort_seek(anchors):
57         r = re.findall('\d*', anchors['number'])
58         number = float(r[0])
59         if '万' in anchors['number']:
60             number *= 10000
61 
62         return number
63 
64     @staticmethod
65     def __show(anchors):
66         # for anchor in anchors:
67             # print(anchor['name'] + '-----' + anchor['number'])
68         for rank in range(0, len(anchors)):
69             print('rank' + str(rank + 1)
70                   + ' : ' + anchors[rank]['name']
71                   + '   ' + anchors[rank]['number'])
72 
73     def go(self):                           # 主方法(平级的函数)
74         html = self.__fetch_content()       # 获取到文本
75         anchors = self.__analysis(html)     # 分析数据
76         anchors = self.__refine(anchors)    # 精炼数据
77         # print(list(anchors))
78         anchor = self.__sort(anchors)
79         self.__show(anchor)
80 
81 
82 spider = Spider()
83 spider.go()

标签:anchors,哪些,Python,self,number,爬虫,html,anchor
From: https://www.cnblogs.com/q-q56731526/p/17371062.html

相关文章

  • python 装饰器
    装饰器(Decorator)是Python语言中的一种高级技巧,可以在不改变原有代码的基础上,动态地给函数或类增加额外的功能。本质上,装饰器就是一个普通函数,它可以接受一个或多个参数,并且返回一个函数作为结果。装饰器的语法如下:@decorator_functiondeffunction_to_be_decorated():#F......
  • python 为什么在python脚本中import就可以引用别人的包
    目录python为什么在python脚本中import就可以引用别人的包编写一个包打包。发布到PyPIpython为什么在python脚本中import就可以引用别人的包Python中的import语句可以将已有的代码模块导入到当前的程序中,方便我们复用代码。如果你想让别人在其电脑上导入你写的包,有以下几......
  • python 内置函数map()、filter()函数
    map()函数接受两个参数:第一个参数是一个函数,第二个参数是一个可迭代对象(如列表、元组等)。该函数会将可迭代对象中的每个元素依次传递给第一个参数指定的函数,并返回一个新的可迭代对象,其中每个元素都是原始对象经过该函数转换后的结果。具体来说,map()函数会将可迭代对象中的每个......
  • python 函数
    在Python中,函数是一段代码块,用于完成特定的任务。函数通常接受一个或多个参数,并返回一个结果。根据函数的定义方式和参数类型,可以将Python函数分为以下几类:内置函数:Python内置了很多常用的函数,如 print()、len()、int() 等。自定义函数:使用 def 关键字可以自定义函数......
  • python 匿名函数(lambda函数)
    Python中的匿名函数是指没有命名标识符的函数,通常被称为lambda函数。与普通函数不同,它们是一种更加简洁的方式来编写小型临时函数。在Python中,匿名函数使用关键字lambda来定义,其语法如下:lambdaarguments:expression其中,arguments表示函数参数,可以是一个或多个,多个参数之间用......
  • python+playwright 学习-24 判断页面元素状态的几种方式
    前言在操作元素之前,可以先判断元素的状态。判断元素操作状态也可以用于断言。常用的元素判断方法page对象调用的判断方法,传一个selector定位参数page.is_checked(selector:str)#checkboxorradio是否选中page.is_disabled(selector:str)#元素是否可以点击或编辑page.i......
  • 【Python】orm 按日期分类
    1.Trunc#获取每个月count总数fromdjango.db.modelsimportSumfromdjango.db.models.functionsimportTruncmodels.NafpComplete.objects.filter().annotate(month=Trunc('point_time','month')).values('month').annotate(count=Sum('......
  • 【访问者设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介访问者模式(VisitorPattern)是一种行为型模式。它封装一个访问者类,把各元素类的操作集合起来,目的是将数据结构与数据操作分离。在不改变原有元素类数据结构的前提下,改变了元素类的执行算法。当某些较为稳定的东西(数据结构或算法),不想直接被改变但又想扩展功能,这时候适合用访问......
  • Python网络爬虫原理及实践 | 京东云技术团队
    作者:京东物流田禹1网络爬虫网络爬虫:是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。网络爬虫相关技术和框架繁多,针对场景的不同可以选择不同的网络爬虫技术。2Scrapy框架(Python)2.1.Scrapy架构2.1.1.系统架构2.1.2.执行流程总结爬虫开发过程,简化爬虫执行流程如下图......
  • python pandas 生成excle
    首先需要导包需要两个包分别是pandas和openpyxlpipinstall-i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com pandaspipinstallopenpyxl 创建Python开始写入#使用pandas生成xlsx的excel文件importpandasaspdimportpandasaspddata=......