Python3 - 网络数据采集初探

Posted 韩俊强

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3 - 网络数据采集初探相关的知识,希望对你有一定的参考价值。

文章目录

0.前言

爬虫违法吗? ----> 法不禁止即为许可, 灰色地带, 写爬虫程序一定要注意隐匿身份

​ ~ 爬虫协议: robots.txt

爬虫的分类?

​ ~ 通用爬虫: 搜索引擎

​ ~ 定向爬虫: 只爬取自己需要的数据

爬虫的作用?

​ ~ 中小企业一般情况下, 数据都是短板, 只能爬虫去采集数据

​ ~ 舆情监控

​ ~ 竞品分析、了解行情

写爬虫程序

1.获取页面: requests.get(url) ---> resp.txt

​2.解析页面:

​		~ 正则表达式解析: re.complite('...') ---> Pattern ---> findall / match /search

​		~ CSS选择器解析: BeautifulSoup4

​		~ XPath解析

1. HTTP/HTTPS

URI - Universal Resource Identifier - 统一资源标识符

URL - Universal Resource Locator - 统一资源定位符

URI = URL + URN(x)

https://www.baidu.com:443/index.html

http://110.242.68.3:80/index.html

https://tiebapic.baidu.com/forum/pic/item/09fa513d269759ee4cf1fe8fa5fb43166c22dfd5.jpg

1.1 URL组成

协议 - HTTP / HTTPS , HTTP默认80端口, HTPPS默认443端口

		~ HTTP - Hyper-Text Transfer Protocol 

		---> HTML - Hyper-Text Markup Language

		~ HTTPS - HTTP over SSL ---> 安全的HTTP

					- 2017年1月1日: App Store 强制使用HTTPS

					- 微信小程序强制使用https

					- Chrome从2017年发布的版本都会对HTTP提示不安全

域名/IP地址 - 要连接的主机

端口号 - 端口用来区分不同的服务

DNS - Domain Name System - 将域名解析为IP地址

HTTP协议 - 请求响应式的协议

1.2 HTTP请求

HTTP请求
		~ 请求行 - GET / HTTP/1.1
				- GET: 从服务器获取资源
				- POST: 向服务器提交数据
		~ 请求头 - 键值对 - 告诉服务器的额外的信息
		~ 空行(\\r\\n)
		~ 消息体 - 你要发给服务器的数据

1.3 HTTP响应

HTTP响应
		~ 响应行 - HTTP/1.1 200 OK
				- 响应状态码 - 404 Not Found / 403 Forbidden
						~ 2XX: 成功了
						~ 3XX: 重定向
						~ 4XX: 请求有问题
						~ 5XX: 服务器有问题
		~ 响应头 - 键值对 - 服务器给浏览器的额外信息
		~ 空行(\\r\\n)
		~ 消息体 - 服务器发给浏览器的数据
				- 如果请求的是图片, 就获取图片的二进制数据
				- 如果请求的是网页, 就获取网页的源代码, 浏览器执行代码, 用户看到页面

1.4 常见状态码

2.HTML/CSS/javascript知识点补充

Python3 - 补充知识点之HTML 、JavaScript、CSS

3.Python程序联网获取数据

三方库: requests
镜像设置:
pip config set global.index-url https://pypi.douban.com/simple
pip install requests
pip list / pip freeze

练习: 1.抓取图片

import requests

resp = requests.get('https://tiebapic.baidu.com/forum/pic/item/09fa513d269759ee4cf1fe8fa5fb43166c22dfd5.jpg')
print(resp.status_code)
with open('baidu.png', 'wb') as file:
    file.write(resp.content)

练习: 2.抓取某电影榜top250

import re

import requests

resp = requests.get(
    url='https://movie.某.com/top250',
    headers=
        # 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:97.0) Gecko/20100101 Firefox/97.0'
        'User-Agent': 'BaiduSpider'
    
)
# https://movie.某.com/robots.txt 爬虫协议
# https://www.taobao.com/robots.txt 淘宝的爬虫协议
# 418 I am a teapot
print(resp.status_code)
# print(resp.text)

# 使用正则表达式捕获组从页面代码中提取电影名称
pattern = re.compile(r'\\<span class="title"\\>(.*?)\\<\\/span\\>')
print(type(pattern))
print(pattern.findall(resp.text))

以上是关于Python3 - 网络数据采集初探的主要内容,如果未能解决你的问题,请参考以下文章

Python3编写网络爬虫04-爬取猫眼电影排行实例

Python3画图系列——NetworkX初探

初探循环---2

Python3爬取电影信息:调用API

电影镜头数时间序列分析初探

爬取电影 Top 500 数据