asyncio 异步爬取百度贴吧 评论

通过异步爬取想要的评论列表,还可以吧循环打开,获取你想要的
贴的所有评论,这里就大家想一想,应该怎么修改代码。

import requests
import json
import asyncio
import aiohttp
import time
import re

# tieba=input('您想爬取的贴吧名称:')
tieba = '坦克世界'
# order=input('您想爬取几页呢?:')
order = '2'


# 下面函数从网页下载数据。

async def inpu(a, b):
    url = 'https://tieba.baidu.com/f?kw={}&ie=utf-8&pn={}'.format(a, b)

    async with aiohttp.ClientSession() as session:
        async with session.get(url) as ponsere:
            ht = await ponsere.text()
            return ht


loop = asyncio.get_event_loop()
da = loop.run_until_complete(inpu(tieba, int(order) * 50))
# print(da)
'''
用re分析数据,取出需要的数据, analyze(分析)
re.findall 可以匹配所有符合条件的字段出来,提取出来的类型是列表
'''


async def analyze(dataas):
    lyze = re.findall(r'<a rel="noreferrer" href="(.*)" title', dataas)
    return lyze


loop = asyncio.get_event_loop()
lie = loop.run_until_complete(analyze(da))
urllis = []
for i in lie:
    urllis.append('https://tieba.baidu.com{}'.format(i))
print(urllis,'程序列表')
async  def xiang(lie):

    try:
        async with aiohttp.ClientSession() as session:
            async with session.get(lie) as preseion:
                xq= await preseion.text()
                ly = re.findall(r'd_post_content j_d_post_content " style="display:;">(.*)</div><br>', xq)
                print(ly)
    except Exception as e:
        print(e)

            # #此re是获取帖子里面所有的评论 以列表形式显现出来

# loop=asyncio.get_event_loop()
# fens=loop.run_until_complete(xiang(lie))
#一共用了多长时间。
async def a(number, url):
    print(number, '开始启动', time.time())
    await xiang(lie=url)
    print(number, '已经结束', time.time())

#loop_list() 通过获取的帖子链接,而开启多少个异步,这个比较快,但是你们想改的话直接改i就可以了,少一些循环不加代理封太快了,
def loop_list():
    # for i,y in zip(range(1,len(urllis)),urllis):
    #     print(i,y)
    task = []
    for i,y in zip(range(1,len(urllis)),urllis):
        print(y,i)
        task.append(a(number=i, url=y))
        print(y,i)
    loop = asyncio.get_event_loop()
    asyncio.set_event_loop(loop)
    loop.run_until_complete(asyncio.wait(task))
loop_list()

学习完了,自己想一想怎么修改一下代码,让他爬取一个贴吧的所有帖子。欢迎大家在评论里写出来怎么改。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值