一、数据来源分析
1.明确需求
明确网站url
数据内容 ->html
2.抓包分析
打开浏览器开发者工具,(右击检查),刷新
通过关键字搜索
在标头中找到网址,cookie
二、代码实现
1、发送请求
模拟浏览器发送请求->url:唯一资源定位符
模拟浏览器:headers = {user-agent:}
请求标头里的内容
构建键值对
请求网址:url =
发送请求:get/post(在请求方法中显示)
post请求参数:在载荷中
get请求参数:直接在网址中 spm=。。。。。
re
2.获取数据
即网络源代码(返回相应数据)
获取相应数据三种方式:
- response.text
获取响应文本数据(字符串)网页源代码
- response.json()
json数据(字典/列表)
- response.content
- 获取二进制数据(图片/音频)
3.解析数据
提取文章(标题、内容)
解析方法
re正则表达式:字符串数据
css选择器:根据标签属性
xpath节点提取:标签节点
css选择器方法
id=''ID名 (有id就先用id
class=''
标签名h1
#定位id名:#id title=selector.css('#articleContentId::text').get()
#class:.类名
4.保存数据
保存本地
文章内容--》html--》pdf
sponse=requests.get(url=url,headers=headers)
import requests
import parsel
import pdfkit
'''发送请求'''
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0'
}
url = 'https://blog.csdn.net/weixin_48201324/article/details/121484930'
response = requests.get (url = url ,headers = headers)
html = response.text
#把html字符串数据转成可解析对象
selector = parsel.Selector(html)
#css xpath方法
#定位id名:#id
#class:.类名
title =selector.css('#articleContentId::text').get()
#<h1 class="title-article" id="articleContentId">
print (title)
content = selector.css('#content_views').get()#获取正文全部标签,保存html模式
print(content)
#保存数据
#前端模版
html_str = '''
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='UTF-8'>
<title>Document</title>
</head>
<body>
{article}
</body>
</html>
'''
#字符串格式化方法
html_data = html_str.format(article=content)
print (html_data)
# 截取前10个字符作为文件名
title = title[:10]
new_title = title[:10]
#文件路径
html_path = 'html\\'+new_title+'.html'
with open(html_path,mode = 'w',encoding='utf-8') as f:
f.write(html_data)