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 = '([sS]*?)' # 非贪婪模式
16 name_pattern = '([sS]*?)'
17 number_pattern = '([sS]*?)'
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()
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net