[TOC]
# Python爬蟲抓取實戰一百度貼吧熱議榜
> 下面示例比較簡單,主要說明下如何查找AJAX數據接口。
1. 打開`Chrome`瀏覽器 ,按`F12`顯示開發者工具,然后訪問`https://tieba.baidu.com`網站
2. 找到`Network`頁,選中`Filter`漏斗圖標,此時可以看到"All|XHR|JS|...."不同類型文件的選擇,我們選中`XHR`。
3. 此時下面的URL列表中有個`topicList`,選中后,右側顯示"Preview"預覽內容為`JSON`數據,這里正是我們看到的熱門話題`Top30`。

找到這里,我們就定位到了數據源請求鏈接地址為: `https://jump.bdimg.com/hottopic/browse/topicList` , 接下來我們就是通過`Python`腳本訪問并獲取響應數據。
```Python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import requests as req
import html
headers = {
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36',
}
# 獲取貼吧信息:
# 排名序號|標題|摘要|熱度|鏈接圖片
def tieba_hot():
url='https://jump.bdimg.com/hottopic/browse/topicList'
# JSON數據接口
resp = req.get(url, headers = headers)
data = resp.json()
topic_list = data['data']['bang_topic']['topic_list']
for topic in topic_list:
topic_url = html.unescape(topic['topic_url'])
print('{} |{}|{}\n'.format(topic['idx_num'],topic['topic_name'],topic_url))
if __name__ == '__main__':
tieba_hot()
```
`requests`庫請求返回的結果數據是`json`格式數據,我們可以通過`json()`方法提取為`Python`字典類型的數據結果。
然后對話題列表提取`話題排名`、`話題內容`和對應的`URL`地址信息。
**說明:**
`topic_url`中的`\&`字符被轉義為`\&`,需要對`HTML實體`進行`反轉義`處理,否則訪問URL會無法正確訪問。
我們使用`html.unescape()`方法來處理一下,只需要將`topic['topic_url']` 改成 `html.unescape(topic['topic_url'])` 即可,其他字段不變。
關于`HTML實體字符轉換`的`HTML庫`實現源碼可以點擊這里查看 [Lib/html/__init__.py](https://github.com/python/cpython/blob/3.8/Lib/html/__init__.py)
- 課程大綱
- 入門篇
- 爬蟲是什么
- 為什么要學習爬蟲
- 爬蟲的基本原理
- TCP/IP協議族的基本知識
- HTTP協議基礎知識
- HTML基礎知識
- HTML_DOM基礎知識
- urllib3庫的基本使用
- requests庫的基本使用
- Web頁面數據解析處理方法
- re庫正則表達式的基礎使用
- CSS選擇器參考手冊
- XPath快速了解
- 實戰練習:百度貼吧熱議榜
- 進階篇
- 服務端渲染(CSR)頁面抓取方法
- 客戶端渲染(CSR)頁面抓取方法
- Selenium庫的基本使用
- Selenium庫的高級使用
- Selenium調用JavaScript方法
- Selenium庫的遠程WebDriver
- APP移動端數據抓取基礎知識
- HTTP協議代理抓包分析方法
- Appium測試Android應用基礎環境準備
- Appium爬蟲編寫實戰學習
- Appium的元素相關的方法
- Appium的Device相關操作方法
- Appium的交互操作方法
- 代理池的使用與搭建
- Cookies池的搭建與用法
- 數據持久化-數據庫的基礎操作方法(mysql/redis/mongodb)
- 執行JS之execjs庫使用
- 高級篇
- Scrapy的基本知識
- Scrapy的Spider詳細介紹
- Scrapy的Selector選擇器使用方法
- Scrapy的Item使用方法
- Scrapy的ItemPipeline使用方法
- Scrapy的Shell調試方法
- Scrapy的Proxy設置方法
- Scrapy的Referer填充策略
- Scrapy的服務端部署方法
- Scrapy的分布式爬蟲部署方法
- Headless瀏覽器-pyppeteer基礎知識
- Headless瀏覽器-pyppeteer常用的設置方法
- Headless瀏覽器-反爬應對辦法
- 爬蟲設置技巧-UserAgent設置
- 反爬策略之驗證碼處理方法
- 反爬識別碼之點擊文字圖片的自動識別方法
- 反爬字體處理方法總結
- 防止反爬蟲的設置技巧總結
- 實戰篇
- AJAX接口-CSDN技術博客文章標題爬取
- AJAX接口-拉購網職位搜索爬蟲
- 執行JS示例方法一之動漫圖片地址獲取方法
- JS執行方法示例二完整mangabz漫畫爬蟲示例
- 應用實踐-SOCKS代理池爬蟲
- 落霞小說爬蟲自動制作epub電子書
- 一種簡單的適用于分布式模式知乎用戶信息爬蟲實現示例
- 法律安全說明