背景:最近喜欢看百度贴吧,因为其内容大多都是吧友的真实想法表达等等原因。但是通过网页去浏览贴吧,始终觉得不够简介,浏览帖子的效率不高,自己就萌发了通过自己爬取贴吧感兴趣的关键字内容,自己写了个winform客户端,目前大致能浏览帖子了。
成果简陋:

总结:

这个我做的十分的简陋,没啥说的,我自己感觉,就解析dom节点比较费时,要观察网页,不同的贴吧名,搜索结果的展示dom节点是不一样的,所以要找到合适的xpath去解析想要的信息,用的库就是 HtmlAgilityPack,这个没有那种使用浏览器内核的库复杂,完成这种值爬取文字信息的我认为对我来讲是够用的了。
说起xpath的使用,其语法 分为单斜杠、双斜杠、中括号属性名查找。比如说:
/div[1]/div[2]就是从根开始匹配第一个div下面的第二个div子节点。用单斜杠我的理解是只能向dom一级一级的匹配。而双斜杠能从任意未知匹配,比如:
//div[@id="postContent_123"]表示查找dom节点中任意id为双引号内容的节点。使用时注意,如果时在某个自己点调用查找单个节点时,比如:
node.GetSingalNode("//div[@class=\"p_post\"]"),这个不会从node这个节点下面去找,依然是全文的dom查找。
 
获取html文档,可以使用这个包自带的HtmlWeb类,也可以自己写RequestHelper封装一下,注意网页编码,目前贴吧搜索页是gbk,帖子内容是utf-8。
这里还有个坑,帖子楼层下得回复消息是异步得,那么从获取html网页的方式获取不到这些回复,只会得到一张img的标签dom,但是通过F12查看,发现所有的回复都是一个请求返回的json,楼层的pid和json的回复对应。
newtownsoft.json 也有根xpath类似的语法,比较好定位某个属性的值。因为这个回复json有的关键属性是数字,所以我没有设计类去接收json字符,而是使用jsonobject。
 
这个贴吧有反爬机制,有图片验证,目前我还不能一次性永久解决,但短暂的办法,我的是加上cookie和userAgent,可以试试,在浏览器出现需要验证的情况去看看cookie,用排除法去找到关键的cookie。这个用上了,不久后又会需要验证,在更换哈cookie的值或者useragent的值就好了。如果用htmlWeb就没这么灵活了,用自己的请求类我觉得还是比较好点。
 
做的时候,为了调试方便,写单元测试是个不错的方法,不需要界面操作,可以提高效率。核心方法直接封装成一个类,直接调用方法就行,因为这个简单没啥界面的复杂交互,所以写单测也好写。
 
做界面设计渲染的时候,使用了自定义控件,flowlayoutpanel比panel要方便。主要是测试前,可以提前序列化一批真实的帖子数据,测试界面时,就使用序列化的静态数据,这样降低了触发验证的风险,也能加快效率。
 
最后这个做的很简陋,心头其实是害怕自己没能力再把这个程序做得更好,所以就没有再继续尝试优化了。

【C#】爬取百度贴吧帖子 通过贴吧名和搜索关键词的更多相关文章

  1. Python爬虫实例(一)爬取百度贴吧帖子中的图片

    程序功能说明:爬取百度贴吧帖子中的图片,用户输入贴吧名称和要爬取的起始和终止页数即可进行爬取. 思路分析: 一.指定贴吧url的获取 例如我们进入秦时明月吧,提取并分析其有效url如下 http:// ...

  2. Python爬虫实战二之爬取百度贴吧帖子

    大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...

  3. 转 Python爬虫实战二之爬取百度贴吧帖子

    静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 ...

  4. Python爬虫实战之爬取百度贴吧帖子

    大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 对百度贴吧的任意帖子进行抓取 指定是否只抓取楼主发帖 ...

  5. python爬取百度贴吧帖子

    最近偶尔学下爬虫,放上第二个demo吧 #-*- coding: utf-8 -*- import urllib import urllib2 import re #处理页面标签类 class Too ...

  6. 芝麻HTTP:Python爬虫实战之爬取百度贴吧帖子

    本篇目标 1.对百度贴吧的任意帖子进行抓取 2.指定是否只抓取楼主发帖内容 3.将抓取到的内容分析并保存到文件 1.URL格式的确定 首先,我们先观察一下百度贴吧的任意一个帖子. 比如:http:// ...

  7. Python爬虫-爬取百度贴吧帖子

    这次主要学习了替换各种标签,规范格式的方法.依然参考博主崔庆才的博客. 1.获取url 某一帖子:https://tieba.baidu.com/p/3138733512?see_lz=1&p ...

  8. 利用python的爬虫技术爬取百度贴吧的帖子

    在爬取糗事百科的段子后,我又在知乎上找了一个爬取百度贴吧帖子的实例,为了巩固提升已掌握的爬虫知识,于是我打算自己也做一个. 实现目标:1,爬取楼主所发的帖子 2,显示所爬去的楼层以及帖子题目 3,将爬 ...

  9. 爬虫系列(六) 用urllib和re爬取百度贴吧

    这篇文章我们将使用 urllib 和 re 模块爬取百度贴吧,并使用三种文件格式存储数据,下面先贴上最终的效果图 1.网页分析 (1)准备工作 首先我们使用 Chrome 浏览器打开 百度贴吧,在输入 ...

  10. 百度图片爬虫-python版-如何爬取百度图片?

    上一篇我写了如何爬取百度网盘的爬虫,在这里还是重温一下,把链接附上: http://www.cnblogs.com/huangxie/p/5473273.html 这一篇我想写写如何爬取百度图片的爬虫 ...

随机推荐

  1. openGauss基于4路鲲鹏服务器的性能调优

    1.概述 本文主要描述了在4路鲲鹏服务器上,通过软硬件协同优化配置达到openGauss数据库的极致性能的方法. 主要包括软硬件要求.BIOS配置.网卡配置.磁盘配置.服务器参数设置.数据库参数配置. ...

  2. 老夫当年手写的js动画库

    前言 当年我学习js的时候,那时候学生时代不知道有jquery,所以手写了一些东西,留下的不多作为回忆. 正文 ``` javascript window.onload = function () { ...

  3. mysql 重新整理——性能下降的原因[四]

    前言 什么是性能下降? 其实就是代码运行的环境变了,那么环境变化是什么? 比如cpu上升了,内存满了.有或者表中数量增加了,量变了. 其实这些是dba干的,但是呢,我们也需要去了解下,并且优化我们的c ...

  4. 我用这10招,能减少了80%的BUG

    前言 对于大部分程序员来说,主要的工作时间是在开发和修复BUG. 有可能修改了一个BUG,会导致几个新BUG的产生,不断循环. 那么,有没有办法能够减少BUG,保证代码质量,提升工作效率? 答案是肯定 ...

  5. Django框架——模版层之标签、自定义过滤器 标签及inclusion_tag(了解)、模版的继承与导入、模型层之前期准备、ORM常用关键字

    模版层之标签 {% if 条件1(可以自己写也可以用传递过来的数据) %} <p>今天又是周三了</p> {% elif 条件2(可以自己写也可以用传递过来的数据) %} &l ...

  6. Django框架——路由分发、名称空间、虚拟环境、视图层三板斧、JsonResponse对象、request获取文件、FBV与CBV、CBV源码剖析、模版层

    路由分发 # Django支持每个应用都可以有自己独立的路由层.静态文件.模版层.基于该特性多人开发项目就可以完全解耦合,之后利用路由分发还可以整合到一起 多个应用都有很多路由与视图函数的对应关系 这 ...

  7. 精通中间件测试:Asp.Net Core实战指南,提升应用稳定性和可靠性

    引言 在上一章节我们实战了在Asp.Net Core中的项目实战,这一章节讲解一下如何测试Asp.Net Core的中间件. TestServer 还记得我们在集成测试中提供的TestServer吗? ...

  8. Kubernetes 已经成为云原生时代的安卓,这就够了吗?

    ​简介:本文将介绍如何在 Kubernetes 上构建新的应用管理平台,提供一层抽象以封装底层逻辑,只呈现用户关心的接口,使用户可以只关注自己的业务逻辑,管理应用更快更安全. 作者:司徒放 导语:云原 ...

  9. CNCF TOC 委员张磊:不断演进的云原生给我们带来了什么?

    简介: 任何一种云原生技术,它不再是某种能力的弥补,而是更多地将云的能力以某种方式更简单.更高效地透出给我的应用去使用.无论是容器.K8s 还是 Service Mesh,他们都是在不同的环节帮助应用 ...

  10. ACMMM2021|在多模态训练中融入“知识+图谱”:方法及电商应用实践

    ​简介: 随着人工智能技术的不断发展,知识图谱作为人工智能领域的知识支柱,以其强大的知识表示和推理能力受到学术界和产业界的广泛关注.近年来,知识图谱在语义搜索.问答.知识管理等领域得到了广泛的应用. ...