0
点赞
收藏
分享

微信扫一扫

python正则的应用(保存lol贴吧前10页的数据)

最近有小伙伴说看完蜜蜂之前的文章‘python代码实现输入关键字下载图片’(https://blog.51cto.com/u_15937426/8649516)把自己平时比较喜欢的图片保存到本地,复制蜜蜂的代码确实可以下载百度图片,但是自己修改代码里面的网址之后想下载一下lol贴吧的前10页的数据并不能保存;对于这个功能的实现的话,其实还是比较简单的。接下来蜜蜂就在代码中用正则实现这一需求,蜜蜂这里是把内容保存到csv文件里了。

import re

import requests
from lxml import etree
# 爬取lol贴吧前10页的数据,
#    <1>要求帖子标题, 帖子内容(外层页面的内容即可)
#    <2>保存到csv文件
#    <3>url: https://tieba.baidu.com/f?kw=lol&ie=utf-8
def loldata(page):
        url = f'https://tieba.baidu.com/f?kw=lol&ie=utf-8&pn={page}'
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
        }
        response = requests.get(url, headers=headers).text

        result = re.findall('<a rel="noopener.*target="_blank" class="j_th_tit ">(.*)</a>', response)
        content = re.findall('''<div class="threadlist_abs threadlist_abs_onlyline ">\n\W*(.*?)\n.*</div>''',
                             response)
        print(len(result))#标题条数
        print(len(content))#内容条数
        #首页置顶的三个标题没有对应的内容
        if page==0:
            for i in range(len(result)):
                if i <= 2:
                    print(result[i])
                    f.write(f'{result[i]}\n')
                else:
                    print(result[i], '====', content[i - 3])
                    f.write(f'{result[i]},{content[i - 3]}\n')
        #其他页标题数=内容数
        else:
            for i in range(len(result)):
                    print(result[i], '====', content[i])
                    f.write(f'{result[i]},{content[i]}\n')
if __name__ == '__main__':
    num=50
    page=0
    m=1
    with open('lol贴吧.csv', 'w', encoding='utf-8') as f:
        for i in range(10):
            print(f'<===========第{m}页=============>')
            loldata(page)
            page += num
            m += 1

运行结果:从结果可以看出 都是一些问答数据

python正则的应用(保存lol贴吧前10页的数据)_lol

举报

相关推荐

0 条评论