看到社区这么多的面板,不由想到了最近学的一点皮毛,不如拿社区练练手,毕竟社区不怎么反爬虫,User-Agent都不用写,我就是想把这个问题反馈啊什么的爬取下来(后面会考虑出零基础到分布式的那种文章)
(绝对不是想要社区币)
确保你安装了requests库(请求)和lxml(解析)和xpath helper(帮你xpath)
pip3 install requests
pip3 install lxml
xpath helper:自行了解 不赘述
当然你也可以在pycharm里直接添加
xpath语法
nodename 选取此节点的所有子节点。
/ 从根节点选取(取子节点)。
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置(取子孙节点)。
. 选取当前节点。
.. 选取当前节点的父节点。
@ 选取属性。
xpath helper可以让你在线使用xpath语法
实际上//用的比较多
这里爬虫的思路已经比较清晰了,就是访问网页,提取数据,保存数据
来到社区,要登录:https://bbs.zkaq.cn/
右键-》检查-》源码
可以看见 问题反馈 是在a标签里的文本,也是li下的文本
于是可以使用xpath_helper找到它:
//li//a/text() #先找到所有的li节点 再找到所有li下所有a的内容,也就是问题反馈那一类
打开pycharm(终端什么的也差不多),新建python文件
import requests #导入请求库
from lxml import etree #导入解析库
r = requests.get('https://bbs.zkaq.cn/') #访问网页用的
text = r.text #把得到的返回包解码 并赋值给变量text
html = etree.HTML(text) #etree的HTML类初始化 再赋值给变量html
results = html.xpath('//li//a/text()') #把得到的html用xpath提取数据 因为得到的是列表,所以要用for列表里每一个元素进行相同的操作取出数据(不然得到的结果会是['xxx','xxx',],不好看)
for result in results:
print(result.strip()) #把得到的结果去除空白并输出 就不保存数据了,意义不大
问题反馈
技术文章投稿区
面试经验分享
CTF&WP专版
正式课&工具篇
闲聊灌水区
Track文库
招聘专版
核心成员专属
提问求助
学习杂记
金币金币金币金币金币
用户名 | 金币 | 积分 | 时间 | 理由 |
---|---|---|---|---|
Track-劲夫 | 50.00 | 0 | 2022-11-11 15:03:13 | 一个受益终生的帖子~~ |
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.
yuyalinnb
发表于 2022-11-6
一赞难求
评论列表
加载数据中...
lua
发表于 2022-11-11
思路很清晰
评论列表
加载数据中...
sechacker
发表于 2022-11-12
感谢大佬分享 对我很有借鉴意义 我也写1个自动化脚本实现了自动登录
评论列表
加载数据中...