python网页数据抓取(知识点:第三方库:开发环境:本节课上课流程思路 )

优采云 发布时间: 2022-04-09 02:29

  python网页数据抓取(知识点:第三方库:开发环境:本节课上课流程思路

)

  知识点:第三方库:开发环境:本课的类流思路:一.数据源分析

  确定要爬取的目标:文档内容

  从哪里可以获得这些文件的数据内容

  数据分析流程:

  右键单击检查或 F12 打开开发人员工具并选择网络

  通过开发者工具搜索(相关的一些数据),同时返回数据(字体编码)

  如果搜索没有返回数据,可以查看向自己网站发送请求的服务器返回的数据内容。

  分析多个文章的url地址,区分请求url地址

  二.代码实现过程发送请求,为文章列表页面发送请求获取数据,获取网页源码解析数据,提取文章url地址或文章头发送请求,为文章详情页url地址发送请求获取数据,获取网页源码分析数据,提取文章内容保存数据,另存为html文件内容保存PDF,需要将html文件转换成多页内容的PDF文件爬取代码

  # 导入模块

import requests # 数据请求模块 第三方模块 pip install requests 在CMD里面即可安装

import parsel # 数据解析模块 第三方模块 pip install parsel

import os # 文件操作模块 内置模块

import pdfkit

# 1. 发送请求, 对于文章列表页面发送请求

# 请求url地址

url = 'https://www.chinawenwang.com/zlist-55-1.html'

# 携带请求头参数 headers 请求头是字典类型 键值对形式 一个关键字对应值 中间是用:隔开的

# User-Agent 浏览器的基本信息

# 请求头是为了把python代码伪装成浏览器对于服务器发送请求 (披着羊皮狼)

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36'

}

# 请求方式: 常见 get请求 post请求

response = requests.get(url=url, headers=headers)

# response响应对象 200 状态码 表示请求成功

# 获取的是响应体的文本数据 (乱码) 转码

# 2. 获取数据, 获取网页源代码 response.text (html字符串数据内容)

print(response.text)

# 3. 解析数据, 提取文章url地址或者文章标题

# 解析数据方法: re正则表达式[可以直接匹配字符串数据内容] css选择器 xpath (对于html字符串数据进行数据转换)

# 如果你是想要从事相关工作 招聘需求有一个要求 re css xpath 都要会

selector = parsel.Selector(response.text) # 把html字符串数据进行数据转换 selector 对象

# attr(href) 属性选择器 获取a标签里面的href属性 css语法 在VIP课程都一节课内容 (2.5小时内容)

# getall() 获取所有 返回列表 匹配多个数据 都是返回列表

href = selector.css('.d-flex h2 a::attr(href)').getall()[:-2]

# 4. 发送请求, 对于文章详情页url地址发送请求

for index in href:

response_1 = requests.get(url=index, headers=headers)

# 5. 获取数据, 获取网页源代码

print(response_1.text)

# 6. 解析数据, 提取文章内容

selector_1 = parsel.Selector(response_1.text)

# 获取文章标题 get() 获取一个 返回的字符串数据

title = selector_1.css('.content-page-header-div h1::text').get()

content = selector_1.css('.content-page-main-content-div').get()

html_content = html_str.format(article=content)

# 7. 保存数据, 保存成html文件内容

# 文件路径以及文件名后缀

html_path = html_filename + title + '.html'

pdf_path = pdf_filename + title + '.pdf'

with open(html_path, mode='w', encoding='utf-8') as f:

f.write(html_content)

# 8. 保存PDF, 需要把html文件转成PDF文件内容

# 配置软件 指定软件位置

config = pdfkit.configuration(wkhtmltopdf=r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe')

# 把html文件里面的内容 转成pdf 保存到 pdf文件夹

pdfkit.from_file(html_path, pdf_path, configuration=config)

print('正在保存: ', title)

  运行结果

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线