一文学会利用python解决文章付费限制问题
作者:朦胧的雨梦 发布时间:2021-04-09 08:23:51
本次爬虫思路
最最重要的是分析信息接口!!!
1. 获取url
2. 通过请求拿到响应
3. 处理反爬
4. 提取信息
5. 保存内容
本次操练网页
https://www.duanmeiwen.com/xinshang/3203373.html(某美文网)
网页内容:
✨一.爬虫模板
🌲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('文章爬取完成')
来源:https://blog.csdn.net/weixin_72906726/article/details/130475910


猜你喜欢
- LNMP一键包安装的Mysql默认开启Mysql日志,如果网站对数据库读写较为频繁的话可能会产生大量日志,并占用磁盘空间,还有可
- jsp登陆验证,网页登陆验证带验证码校验,登录功能之添加验证码part_1:专门用于生成一个验证码图片的类:VerificationCode
- 创建表时创建外键创建两个表格,一个名为class,create table classes(id int not null primary
- 现在Go1.14都已经发布好些日子了,之前发的Go环境搭建教程早已过时,只是因为时间问题一直没来得及更新这次怀着愧疚的心情,在凌晨四点时,将
- 简介在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找
- code:f = open('yesterday','r',encoding='utf-8'
- jinjia和vue.js默认的模板转义符都是{{}}目前的解决办法是修改vue.js的转义符,将原来的{{}}替换为其他标签,我改为{[]
- 目录Uiautomator2的安装和使用具体实现如何打开支付宝并进入蚂蚁森林?收能量如何停止完整代码结语@[toc] 虽然我支付宝加了好多好
- 计是一个输入-输出的过程,因为首先有用户的需求,客户的项目才有设计的产生,设计是带有目的性和市场行为的,当然也有一部分的创造性设计,仅仅为了
- 一、Python开机自动运行假如Python自启动脚本为 auto.py 。那么用root权限编辑以下文件:sudo vim /etc/rc
- EXCEL的数值排序功能还是挺强大的,升序、降序,尤其自定义排序,能够对多个字段进行排序工作。那么,在Python * 中,有没有这样强大的排
- RIFF file formatRIFF全称为资源互换文件格式(Resources Interchange File Format),是Wi
- Django的QuerySets酷毙了!在本文中我将解释一下QuerySets是什么,它是如何工作的(如果你对它已经熟悉了,你可
- 1.函数的声明定义//func关键字//getStudent函数名//(id int, classId int) 参数列表//(name s
- 要实现功能,首先要做前端,经过对比其他网站的在线聊天功能,发现除了基本的聊天功能以外,还要注意以下几点.一次只能和一个人聊天,但是可以随意切
- GetRepeatTimes(TheChar,TheString) 得到一个字符串在另一个字符串当中出现几次的函数(新)如:response
- 和之前C++执行Linux Bash命令的方法 一样,Python依然支持system调用和popen()函数来执行linux bash命令
- 这篇文章主要介绍了pyftplib中文乱码问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 模式库在模式库里,我将列出所有电子商务网站需要的模式.以下将罗列出经典常用的模式案例,我也试图让这些模式看起来更有趣味性与实用性。(Yaho
- 1.在Home(你取的项目名)的config.php中添加如下配置<?phpreturn array( &nbs