python爬取百度贴吧

python爬取百度贴吧

import requests
from lxml import etree
import json
class Tieba(object):
    def __init__(self,name):
        self.url = 'https://tieba.baidu.com/f?ie=utf-8&kw={}'.format(name)
        self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'}
    def get_data(self,url):
        response = requests.get(url,headers=self.headers)
        print(url)
        return response.content
    def parse_data(self,data):
        data = data.decode().replace("<!--","").replace("-->","")
        # print(data)
        html = etree.HTML(data)
        el_list = html.xpath('//li[@class=" j_thread_list clearfix thread_item_box"]/div/div[2]/div[1]/div[1]/a')
        data_list = []
        for el in el_list:
            temp = {}
            temp['title'] = el.xpath('./text()')[0]
            temp['link'] = 'https:' + el.xpath('//a[contains(text(),"下一页>")]/@href')[0]
            data_list.append(temp)
            try:
                next_url = 'https:' + html.xpath('//*[@id="frs_list_pager"]/a[10]/@href')[0]
            except:
                next_url = None
        return data_list,next_url
    def save(self,data_list):
                with open('news', 'w', encoding='utf-8') as f:
                    for data in data_list:
                        datas = json.dumps(data, ensure_ascii=False)
                        f.write(datas)
                        print(data)


    def run(self):
        next_url = self.url
        while True:
            data = self.get_data(next_url)
            data_list,next_url = self.parse_data(data)
            self.save(data_list)
            print(next_url)
            if next_url == None:
                break

if __name__ == '__main__':
    tieba = Tieba('小米')
    tieba.run()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值