Python爬虫

您所在的位置:网站首页 python批量爬取网页图片 Python爬虫

Python爬虫

2023-06-12 21:46| 来源: 网络整理| 查看: 265

本文概要

本篇文章主要介绍利用Python爬虫爬取付费文章,适合练习爬虫基础同学,文中描述和代码示例很详细,干货满满,感兴趣的小伙伴快来一起学习吧! 在这里插入图片描述

🌟🌟🌟个人简介🌟🌟🌟

☀️大家好!我是新人小白博主朦胧的雨梦,希望大家多多关照和支持😝😝😝 🌖大家一起努力,共同成长,相信我们都会遇到更好的自己👊👊👊 🌗期待我的文章能给各位带来收获和解决问题的灵感🤩🤩🤩 🌟大家的三连是我不断更新的动力~😘😘😘

在这里插入图片描述

目录 本文概要🌟🌟🌟个人简介🌟🌟🌟本次爬虫思路本次操练网页学习目标🏆✨一.爬虫模板🌲1.urllib库的使用模板🌲2.requests库的使用模板 ✨二.分析信息接口✨三.通过请求拿到响应✨四. 提取信息🌲1.正则表达式🌲2.XPath🌲 3.漂亮的汤(BeautifulSoup) ✨五.保存内容✨六.总结(附完整代码)🌲完整代码 💫往期好文推荐

本次爬虫思路

最最重要的是分析信息接口!!! 1. 获取url 2. 通过请求拿到响应 3. 处理反爬 4. 提取信息 5. 保存内容

本次操练网页

    https://www.duanmeiwen.com/xinshang/3203373.html(某美文网)在这里插入图片描述 网页内容: 在这里插入图片描述

学习目标🏆

  1.掌握爬虫布置模板;

  2.掌握反爬手段;

  3.了解如何提取保存内容。

✨一.爬虫模板 🌲1.urllib库的使用模板 import urllib.request url ='xxxxxxxxxxxx' #发送请求 request= urllib.request.Request(url,data,header) #得到响应 response=urllib.request.urlopen(request) #解码 content = response.read().decode() #查看数据 print(content) 🌲2.requests库的使用模板 import requests url ='xxxxxxxxxxxx' #发送请求 response = request.get(url, params,headers) (get请求或者post请求) #根据响应的格式解码,非常智能 response.encoding=response.appareent_encoding #查看数据 print(response.txt) ✨二.分析信息接口

  1.首先右键查看网页源代码

在这里插入图片描述   很明显,爬取的信息就在源代码里,所以直接对网页链接发起请求。这里请求头伪装我们优先携带user-agent。

✨三.通过请求拿到响应 import requests # 需要请求的url url = 'https://www.duanmeiwen.com/xinshang/3203373.html' # 伪装请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36', } # 获得响应 response = requests.get(url=url, headers=headers) # 智能解码 response.encoding = response.apparent_encoding # 打印数据 print(response.text)

在这里插入图片描述 在这里插入图片描述 真轻松,这种网页就是最好的,把东西都放在你面前,拿吧拿吧我很大方!

✨四. 提取信息

针对返回数据的特点,我们现在有三种方法:

🌲1.正则表达式

  正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。简单来说,利用一定的逻辑公式,过滤掉不需要的数据,主要处理字符串。对于本题来说有点杀鸡用牛刀了。简单来示范一下: 首先导入re模块

import re

接下来开始操作这堆"字符串"   re.compile()是用来优化正则的,它将正则表达式转化为对象,re.search(pattern, string)的调用方式就转换为 pattern.search(string)的调用方式,多次调用一个正则表达式就重复利用这个正则对象,可以实现更有效率的匹配。需要搭配finditer()等一起使用,参数pattern : 正则表达式;,flags : 表示匹配模式。

在这里插入图片描述

  右键点击检查进入Network页面,主要是方便我们看清楚结构。 在这里插入图片描述

效果 在这里插入图片描述   这里写的比较粗糙,因为大家会发现我们会大量在重复写一个相同的筛选语句,所以就有那么一点机械重复的感觉,而且我们有专门对付这中HTML结构的工具,所以接下来咱们隆重介绍XPath!

🌲2.XPath

  XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初XPath的提出的初衷是将其作为一个通用的、介于XPointer与XSL间的语法模型。但是XPath很快地被开发者采用来当作小型查询语言。我们只要简单理解为它主要是针对定位HTML中某部分位置的语言。 首先导入XPath

from lxml import etree

接下来开始操作 在这里插入图片描述

效果 在这里插入图片描述

这就是优雅,对比上面,我们用三行代码就完成了任务,由此可见,用对方法很重要。

🌲 3.漂亮的汤(BeautifulSoup) ✨五.保存内容

  这里就很简单,基础文件操作的知识,“行百里者半九十”,来吧,咱们直接一口气写完。

tree = etree.HTML(response.text) titles = tree.xpath('/html/body/div[2]/div[2]/div/div[2]/h2/text()') message = tree.xpath('/html/body/div[2]/div[2]/div/div[2]/p/text()') for i in range(len(message)): with open('优美文艺句子.txt', 'a', encoding='utf-8') as fp: fp.write(message[i]) fp.write('\n') print('文章爬取完成')

效果 在这里插入图片描述

✨六.总结(附完整代码)

  通过今天的小案例,我们明白了,第一,思路一定要清楚,快准狠分析出接口链接,第二,提取数据的方法要正确,这样会直接事半功倍,好了,今天就分享到这里,谢谢大家的观看,有什么想法记得评论区告诉我!拜拜~✨ ✨ ✨

🌲完整代码 import requests from lxml import etree # 需要请求的url url = 'https://www.duanmeiwen.com/xinshang/3203373.html' # 伪装请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36', } # 获得响应 response = requests.get(url=url, headers=headers) # 智能解码 response.encoding = response.apparent_encoding # 提取数据 tree = etree.HTML(response.text) titles = tree.xpath('/html/body/div[2]/div[2]/div/div[2]/h2/text()') message = tree.xpath('/html/body/div[2]/div[2]/div/div[2]/p/text()') #遍历保存数据 for i in range(len(message)): with open('优美文艺句子.txt', 'a', encoding='utf-8') as fp: fp.write(message[i]) fp.write('\n') print('文章爬取完成') 💫往期好文推荐

  TOP🥇.自动驾驶技术未来大有可为❤️❤️❤️🏆🏆🏆❤️❤️❤️

  TOP🥈.Python爬虫 | 利用python爬虫获取想要搜索的数据(某du)❤️❤️❤️🏆🏆🏆❤️❤️❤️

  TOP🥉.ChatGPT | 一文详解ChatGPT(学习必备)❤️❤️❤️🏆🏆🏆❤️❤️❤️

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3