一个简单的社区爬虫(爬取加解析)

yuyalinnb   ·   发表于 2022-11-06 21:29:13   ·   技术文章

0x00 前言


看到社区这么多的面板,不由想到了最近学的一点皮毛,不如拿社区练练手,毕竟社区不怎么反爬虫,User-Agent都不用写,我就是想把这个问题反馈啊什么的爬取下来(后面会考虑出零基础到分布式的那种文章)
(绝对不是想要社区币)

0x01 准备工作

确保你安装了requests库(请求)和lxml(解析)和xpath helper(帮你xpath)

1、安装方法:

  1. pip3 install requests
  2. pip3 install lxml
  3. xpath helper:自行了解 不赘述

当然你也可以在pycharm里直接添加

2、xpath和xpath helper简介

xpath语法

  1. nodename 选取此节点的所有子节点。
  2. / 从根节点选取(取子节点)。
  3. // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置(取子孙节点)。
  4. . 选取当前节点。
  5. .. 选取当前节点的父节点。
  6. @ 选取属性。

xpath helper可以让你在线使用xpath语法

实际上//用的比较多

0x02 开始写代码

这里爬虫的思路已经比较清晰了,就是访问网页,提取数据,保存数据
来到社区,要登录:https://bbs.zkaq.cn/
右键-》检查-》源码

可以看见 问题反馈 是在a标签里的文本,也是li下的文本
于是可以使用xpath_helper找到它:

  1. //li//a/text() #先找到所有的li节点 再找到所有li下所有a的内容,也就是问题反馈那一类

打开pycharm(终端什么的也差不多),新建python文件

  1. import requests #导入请求库
  2. from lxml import etree #导入解析库
  3. r = requests.get('https://bbs.zkaq.cn/') #访问网页用的
  4. text = r.text #把得到的返回包解码 并赋值给变量text
  5. html = etree.HTML(text) #etree的HTML类初始化 再赋值给变量html
  6. results = html.xpath('//li//a/text()') #把得到的html用xpath提取数据 因为得到的是列表,所以要用for列表里每一个元素进行相同的操作取出数据(不然得到的结果会是['xxx','xxx',],不好看)
  7. for result in results:
  8. print(result.strip()) #把得到的结果去除空白并输出 就不保存数据了,意义不大

0x03运行结果

问题反馈

技术文章投稿区

面试经验分享

CTF&WP专版

正式课&工具篇

闲聊灌水区

Track文库

招聘专版

核心成员专属

提问求助

学习杂记

0x04 后记

金币金币金币金币金币

用户名金币积分时间理由
Track-劲夫 50.00 0 2022-11-11 15:03:13 一个受益终生的帖子~~

打赏我,让我更有动力~

3 条回复   |  直到 2022-11-12 | 886 次浏览

yuyalinnb
发表于 2022-11-6

一赞难求

评论列表

  • 加载数据中...

编写评论内容

lua
发表于 2022-11-11

思路很清晰

评论列表

  • 加载数据中...

编写评论内容

sechacker
发表于 2022-11-12

感谢大佬分享 对我很有借鉴意义 我也写1个自动化脚本实现了自动登录

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.