笔者近期需要使用爬虫技术来爬取某网页上的数据,因此学习了一下Python爬虫技术,正好最近也在学习Javaweb和spring相关技术,借此过程巩固一下相关基础知识。
1 了解基础知识
①Http基础原理
相关定义:URL、port、query、path......
HTTP和HTTPS的区别?SSL?
客户端的服务器请求-响应的过程?
什么是请求?响应?它们的组成-请求头、请求体?
使用网页开发者工具,查看请求/响应的详细过程、相关参数。
②Web网页基础
网页的组成?HTML、CSS、JavaScript?
网页的节点和节点间的关系(解析和提取我们目标内容的关键基础知识)
③爬虫的基本原理
爬虫:获取网页并提取和保存信息的自动化程序
④Session和Cookie
Http的无状态
理解目前网页是动态的,区别于静态html
动态网页需要Session和Cookie,Session和Cookie的基本概念
会话Cookie和持久Cookie
⑤代理的基本原理
为什么需要代理?
常见的代理有哪些?
⑥多线程和多进程的基本原理
理解线程和进程
并发和并行
为什么使用多线程?
2 开始基本库的使用
掌握了第1节中的基础知识,就可以从写简单的爬虫程序开始,逐步深入了解爬虫的原理、使用、案例,最终实现我们的目标工作。
首先,安装配置好Python3环境,并使用pip工具安装相关类库
此链接提供完整的安装教程
这里介绍一个requests库
requests库的使用
1 发送get请求,将返回结果转化为JSON格式的字典
import requests
data = {'name': 'germey', 'age': '25'}
r = requests.post("https://www.httpbin.org/post", data=data)
print(r.text)
print(r.json())
结果:
{
"args": {},
"data": "",
"files": {},
"form": {
"age": "25",
"name": "germey"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "18",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "www.httpbin.org",
"User-Agent": "python-requests/2.28.1",
"X-Amzn-Trace-Id": "Root=1-632feafa-1e67dd967da4a55216a9fd7e"
},
"json": null,
"origin": "27.17.104.42",
"url": "https://www.httpbin.org/post"
}
{'args': {}, 'data': '', 'files': {}, 'form': {'age': '25', 'name': 'germey'}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Content-Length': '18', 'Content-Type': 'application/x-www-form-urlencoded', 'Host': 'www.httpbin.org', 'User-Agent': 'python-requests/2.28.1', 'X-Amzn-Trace-Id': 'Root=1-632feafa-1e67dd967da4a55216a9fd7e'}, 'json': None, 'origin': '27.17.104.42', 'url': 'https://www.httpbin.org/post'}
<class 'dict'>
2 使用正则表达式,抓取网页特定的文本
import requests
import re
r = requests.get('https://ssr1.scrape.center/')
pattern = re.compile('<h2.*?>(.*?)</h2>', re.S)
titles = re.findall(pattern, r.text)
print(titles)
结果:
['霸王别姬 - Farewell My Concubine', '这个杀手不太冷 - Léon', '肖申克的救赎 - The Shawshank Redemption', '泰坦尼克号 - Titanic', '罗马假日 - Roman Holiday', '唐伯虎点秋香 - Flirting Scholar', '乱世佳人 - Gone with the Wind', '喜剧之王 - The King of Comedy', '楚门的世界 - The Truman Show', '狮子王 - The Lion King']
3 爬取图像、视频、音频的方式
import requests
r = requests.get('https://scrape.center/favicon.ico')
with open('favicon.ico','wb') as f:
f.write(r.content)
运行结果:
正则表达式
通过request库的学习我们已经可以获取网页的源代码,正则表达式就是从源代码中获取我们的目标字符串的工具。
https://tool.oschina.net/regex
此网站提供了一个非常好用的构建正则表达式的工具
https://www.cnblogs.com/fancy2022/p/16687764.html
JavaScript-正则表达式基础知识
希望本文章对正在学习或正准备学习Python爬虫技术的同学有所帮助。
本文参考:《Python3网络爬虫开发实战》 作者:崔庆才
标签:www,网页,入门,Python,爬虫,https,httpbin,requests From: https://www.cnblogs.com/fancy2022/p/16729179.html