爬取百度贴吧(一)--分析贴吧首页源码

一、分析贴吧网页源码结构

直接打开源代码,太乱了。无从下手,那就从开发者工具找一下。

我想获取每个帖子的标题、回复数、时间和链接(可能的话以后会尝试自动保存帖子当前页的截图)

先选中帖子的模块吧~

在chrome中,ctrl+shift+i就可以打开。

选中elements的选项。

接下来的操作就很简单了,只要将鼠标移到代码上,其所指示的位置就会标出。

一步一步,得出了我想找的一个帖子所对应的代码,以第一个非置顶帖为例:

不难看出,我们想要的帖子在这个html文件的body/div class="wrap1"/div class="wrap2"/...content/....../j_thread_list下

上面是置顶帖,下面紧挨着的,自然是下一个帖子。

我们发现每一个帖子在贴吧首页的信息都是存放在一个单独的<li>标签下的,右键,导出为html,然后我们就可以在别的文本编辑器里粘贴这部分的内容。

粘贴结果如下:

<li class=" j_thread_list clearfix" data-field="{&quot;id&quot;:5935765954,&quot;author_name&quot;:&quot;zero2crayon&quot;,&quot;author_nickname&quot;:&quot;\ud83c\udf6dzero\ud83c\udf7c&quot;,&quot;author_portrait&quot;:&quot;8ffe7a65726f32637261796f6ef3a4&quot;,&quot;first_post_id&quot;:122696355566,&quot;reply_num&quot;:6,&quot;is_bakan&quot;:null,&quot;vid&quot;:&quot;&quot;,&quot;is_good&quot;:null,&quot;is_top&quot;:null,&quot;is_protal&quot;:null,&quot;is_membertop&quot;:null,&quot;is_multi_forum&quot;:null,&quot;frs_tpoint&quot;:null}">
            <div class="t_con cleafix">
                            <div class="col2_left j_threadlist_li_left">
                 
                        <span class="threadlist_rep_num center_text" title="回复">6</span>
                            </div>
                <div class="col2_right j_threadlist_li_right ">
      
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 下面是使用Python正则表达式百度吧中原工学院吧首页的标题的示例代码: ```python import requests import re url = 'https://tieba.baidu.com/f?kw=%E4%B8%AD%E5%8E%9F%E5%B7%A5%E5%AD%A6%E9%99%A2&ie=utf-8&pn=0' response = requests.get(url) html = response.text # 使用正则表达式提标题 pattern = r'<a rel="noreferrer" href="/p/\d+" title="(.+?)".*?</a>' titles = re.findall(pattern, html) # 输出标题 for title in titles: print(title) ``` 解释一下代码: 首先使用 `requests` 库获网页代码,然后使用正则表达式提标题。正则表达式 `r'<a rel="noreferrer" href="/p/\d+" title="(.+?)".*?</a>'` 中的 `(.+?)` 表示匹配任意字符,但只匹配到第一个 `</a>` 之前的内容,也就是标题,其他的字符使用 `.*?` 匹配。最后使用 `re.findall()` 函数提所有匹配的标题并输出。 ### 回答2: 使用Python百度吧中原工学院吧首页的标题,我们可以使用正则表达式配合Python的requests库和re库来实现。 首先,我们需要使用requests库发送HTTP请求,获百度吧中原工学院吧首页的HTML码。可以使用以下代码实现: ```python import requests url = "https://tieba.baidu.com/f?kw=中原工学院" headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"} response = requests.get(url, headers=headers) html = response.text ``` 接下来,我们使用正则表达式匹配出标题。根据百度吧的HTML结构,每个帖子的标题由`<a class="j_th_tit " target="_blank" href="...">标题内容</a>`来表示。我们可以使用以下正则表达式来匹配标题内容: ```python import re pattern = r'<a class="j_th_tit " target="_blank" href=".*?">(.*?)</a>' titles = re.findall(pattern, html) ``` 最后,我们可以遍历所有匹配到的标题,并打印出来: ```python for title in titles: print(title) ``` 整个百度吧中原工学院吧首页标题的过程就完成了。完整代码如下: ```python import requests import re url = "https://tieba.baidu.com/f?kw=中原工学院" headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"} response = requests.get(url, headers=headers) html = response.text pattern = r'<a class="j_th_tit " target="_blank" href=".*?">(.*?)</a>' titles = re.findall(pattern, html) for title in titles: print(title) ``` 运行这段代码即可输出百度吧中原工学院吧首页的所有标题。 ### 回答3: 要用Python使用正则表达式百度吧中原工学院吧首页的标题,首先需要使用Python中的requests库发送HTTP请求获页面的HTML码。然后,我们可以使用正则表达式来匹配标题的HTML元素和属性。 以下是一个基本的示例代码: ```python import requests import re # 发送HTTP请求获页面的HTML码 url = 'https://tieba.baidu.com/f?kw=中原工学院&ie=utf-8&tab=good' response = requests.get(url) html = response.text # 使用正则表达式匹配标题的HTML元素和属性 pattern = r'<a.*?class="j_th_tit.*?".*?>(.*?)</a>' titles = re.findall(pattern, html) for title in titles: print(title) ``` 在代码中,我们首先使用requests库的get方法发送HTTP请求获网页的HTML码,并将结果保存在变量`html`中。然后,我们使用正则表达式`<a.*?class="j_th_tit.*?".*?>(.*?)</a>`匹配页面中所有帖子标题的HTML元素。通过Python的`re.findall`方法,我们可以提所有匹配到的标题文本,并将它们打印出来。 以上代码只是一个简单的示例,实际过程可能需要一些优化,如处理异常情况、使用更精确的正则表达式等。使用Python的正则表达式可以有效地从HTML文本中提所需的信息,帮助我们实现百度吧中原工学院吧首页的标题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值