今日总结
一、认识爬虫
1. 爬虫基本步骤
爬虫就是通过代码获取别人网站上的数据
- 获取网页数据 - requests和自动化测试工具(Selenium)
- 解析数据 - 正则表达式、css选择器、xpath
- 存储数据 - 表格文件(csv、openpyxl)和数据库文件
2. 获取网页数据
1) 认识网站
一个网页由三个部分组成:html、css、javascript(js)
- html - 决定网页中有什么
- css - 决定网页中内容的样式(长什么样)
- js - 让网页内容动态变化
2) requests的使用
requests是基于HTTP(s)协议的网络请求的第三方库
二、Request
1. 如何获取网页内容
- requests.get(url) - 获取指定url对应的网页内容,返回一个响应
- url - 同一资源定位符(网址)
response = requests.get('https://www.sohu.com/')
print(type(response), response) # <class 'requests.models.Response'> <Response [200]>
2. 获取网页内容类型
1)获取网页内容原数据(类型是二进制) - 主要针对图片、视频、音频
print(response.content)
2)获取网页内容文本格式数据 - 针对网页
print(response.text)
3)将获取的内容进行json转换 - 针对返回数据是json数据的接口
print(response.json())
3. 添加客户端信息
伪装成浏览器
headers ={'User-Agent': '','cookie': ''}
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'
}
response = requests.get('https://movie.douban.com/top250', headers=headers)
print(response.text)
result = findall(r'<img width="100" alt="(.+?)"', response.text)
print(result)
三、RequestJson
import requests
from re import findall
import time
time.sleep(1)
# response = requests.get('https://www.toutiao.com/')
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'
}
url = 'https://www.toutiao.com/api/pc/feed/?min_behot_time=0&category=__all__&utm_source=toutiao&widen=1&tadrequire=true&_signature=_02B4Z6wo00d01OMZcbgAAIDC74SAL2Quu5jjPXUAAFitQXZUPpEz0t6WQp2bx.YSJ7Kwks6umgdaCFTnlJLqG5xt7XbxK6OW.Ll4t2ofjFmJ9Pelj-WlovpDwU7lKu8Ep-PIU43aA2S2R.UY9f'
response = requests.get(url, headers=headers)
# print(response.json())
# 解决中文显示编码值的问题:response.text.encode().decode('unicode_escape')
print(findall(r'"title":\s*".+?"', response.text.encode().decode('unicode_escape')))