扫码领资料
获网安教程
免费&进群
前言
阅读时间:4分钟左右
众所周知,社区几乎没有反爬策略,于是我们可以轻松地开发一个爬虫。
(脚本,采集的数据放到了最后)
编写
1.确定非置顶帖子名字的xpath
首先,在登录状态下进入社区https://bbs.zkaq.cn/
我们的目标是爬取每一页的每个帖子,但是不包含重复的置顶帖子,我们这里将使用绝对路径的方法。我们看一下源码,找到帖子名字所在的位置检查,然后右键,copy,copy xpath。但是这个复制出来的是位置,不是值,所以要增加text()。另一方面,我们只选中了一个帖子名字,那么怎么选中除了置顶的所有的帖子名字呢?
/html/body/div[1]/div[1]/div[3]/div[2]/div[8]/div/h4/a[2]/span
这就是图中的PTE考试靶机什么的xpath位置,可以看见这里有很多切片,那么我们可以尝试去除任意切片,观察选中的帖子。经过尝试,删除[8]可以选中所有非置顶帖子。而且正好没有选中置顶帖子。
/html/body/div[1]/div[1]/div[3]/div[2]/div/div/h4/a[2]/span
2. 观察url变化
进入
https://bbs.zkaq.cn/new/1.html
再切换到下一页
https://bbs.zkaq.cn/new/2.html
可以发现就是html前面的数字加了1,我们可以使用for循环增加每一个数字。
3. 编写
import requests
from lxml import etree
i = 1
while i <= 260:
link = f'https://bbs.zkaq.cn/new/{i}.html'
response = requests.get(link)
i = i + 1
text = response.content.decode()
html = etree.HTML(text)
a_list = html.xpath("/html/body/div[1]/div[1]/div[3]/div[2]/div/div/h4/a[2]/span/text()")
for a in a_list:
print(a)
import就是导入库,这里导入的是请求库和解析库
i = 1是给i赋一个初始值,如果直接while会报错
while是指在i<=260时,不断执行以下操作:
访问这个网页,并且访问完后这个i继续加1,就是访问下一页,直到260页。
然后对response进行utf8解码,赋值给text
然后使用etree的HTML类初始化,赋值给html
然后使用xpath语法提取所有的帖子名
由于得到的是列表,所以用for循坏提取列表里的每个元素,最后打印出来,就是我们想要的了。
申明:本公众号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,
所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.
回顾往期内容
扫码白嫖视频+工具+进群+靶场等资料
扫码白嫖!
还有免费的配套靶场、交流群哦
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...