Python笔记-获取某贴吧页面所有的贴吧id

Posted IT1995

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python笔记-获取某贴吧页面所有的贴吧id相关的知识,希望对你有一定的参考价值。

这里要注意,获取贴吧ID有防爬虫,他会把数据用<!-- -->这个注释掉。

运行截图如下:

注意要伪造成浏览器,不然获取不到数据

代码如下:

import requests
import queue
import time
from bs4 import BeautifulSoup

header = {
    'Host' : 'tieba.baidu.com',
    'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'Accept-Language' : 'zh-CN,zh;q=0.9',
    'Cache-Control' : 'no-cache',
    'Connection' : 'keep-alive',
    'Cookie' : 'xxxxxxxxxxxxxxxx',
    'Pragma' : 'no-cache',
    'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36',
    'sec-ch-ua' : '" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"'
}

baseUrl = "https://tieba.baidu.com/f?kw=%E5%B8%9D&ie=utf-8"
urlQueue = queue.Queue(10000)

def getRequest(url):
    response = requests.get(url, headers = header)
    return response.text
    pass

if __name__ == '__main__':

    urlQueue.put(baseUrl)
    for i in range(100):
        url = urlQueue.get()
        content = getRequest(baseUrl + url)
        content = content.replace('-->', '').replace('<!--', '')
        contentSoup = BeautifulSoup(content, "html.parser")
        urlAllList = contentSoup.select("a")
        for urlTmp in urlAllList:
            if urlTmp.attrs.__contains__('href'):
                urlString = urlTmp['href']
                if '/p/' in urlString:
                    testUrl = urlString.split('/p/')[1]
                    urlQueue.put(testUrl)
                    pass
                pass
            pass
        print('over')

    pass

 

以上是关于Python笔记-获取某贴吧页面所有的贴吧id的主要内容,如果未能解决你的问题,请参考以下文章

爬虫抓取百度贴吧帖子内容

python 爬虫第二例--百度贴吧

python下载百度贴吧的指定帖子的所有图片

百度贴吧获取某个吧的全部图片

Python简易爬虫爬取百度贴吧图片

urllib:简单的贴吧页面爬取代码