最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 新人必看!手把手教你使用python爬取百度贴吧

    正文概述    2020-07-18   305

    新人必看!手把手教你使用python爬取百度贴吧

    大多数人做数据的第一个任务,就是做网页爬取。那时候,我对使用代码从网站上获取数据这项技术完全一无所知,它偏偏又是最有逻辑性并且最容易获得的数据来源。在几次尝试之后,网页爬取对我来说就几乎是种本能行为了。如今,它更成为了我几乎每天都要用到的少数几个技术之一。十一国庆长假刚刚过去,哪些地方是大家旅游关注的热点?让我们爬取一下百度贴吧旅游信息,了解大家旅游关注的热点信息。

    • 写在最前面:        

    我们用 urllib 爬取页面,再用BeautifulSoup提取有用信息,最后用 xlsxwriter 把获取的信息 写入到excel表。

    一、技术列表

    1. python 基础        

    2. xlsxwriter 用来写入excel文件的        

    3. urllib——python内置爬虫工具        

    4. BeautifulSoup解析提取数据        

    二、找到目标页面

    https://tieba.baidu.com/f?kw=%E6%97%85%E6%B8%B8&ie=utf-8&pn=0

    新人必看!手把手教你使用python爬取百度贴吧

    三、输出结果

    新人必看!手把手教你使用python爬取百度贴吧

    四、安装必要的库

    1. win+R 打开运行        

    2. 输出cmd 进入控制台        

    3. 分别安装beautifulsoup4,lxml,xlsxwriter        

    pip install   lxml
    pip install   beautifulsoup4
    pip install   xlsxwriter

    五、分析页面

    1. 页面规律

    我们单击分页按钮,拿到页面最后一个参数的规律

    • 第二页:https://tieba.baidu.com/f?kw=旅游&ie=utf-8&pn= 50        

    • 第三页:https://tieba.baidu.com/f?kw=旅游&ie=utf-8&pn= 100        

    • 第四页:https://tieba.baidu.com/f?kw=旅游&ie=utf-8&pn= 150        

    新人必看!手把手教你使用python爬取百度贴吧新人必看!手把手教你使用python爬取百度贴吧

    2. 页面信息

    旅游信息列表打开网页https://tieba.baidu.com/f?kw=旅游&ie=utf-8&pn= 50按键盘F12键或者 鼠标右键"检查元素"(我用的谷歌chrome浏览器)

    发现所有旅游列表都有个共同的class类名j_thread_list

    新人必看!手把手教你使用python爬取百度贴吧

    作者与创建时间

    作者的classfrs-author-name

    创建时间的classis_show_create_time

    新人必看!手把手教你使用python爬取百度贴吧

    标题

    标题的classj_th_tit

    新人必看!手把手教你使用python爬取百度贴吧

    六、全部代码

    import xlsxwriter
    # 用来写入excel文件的
    import urllib.parse
    # URL编码格式转换的
    import urllib.request
    # 发起http请求的
    from bs4 import BeautifulSoup
    # css方法解析提取信息
    
    url='https://tieba.baidu.com/f?kw='+urllib.parse.quote('旅游')+'&ie=utf-8&pn='
    # 百度贴吧旅游信息
    # parse.quote("旅游") # 结果为%E6%97%85%E6%B8%B8
    
    herders={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36', 'Referer':'https://tieba.baidu.com/','Connection':'keep-alive'}
    # 请求头信息
    
    data = []
    # 所有爬虫的数据都存放到 这个data列表里面
    
    """
    getList 获取分页中的列表信息
    url   分页地址
    """
    def getList(url):
    
        req = urllib.request.Request(url,headers=herders)
        # 设置请求头
        response=urllib.request.urlopen(req)
        # 发起请求得到 响应结果response
    
        htmlText = response.read().decode("utf-8").replace("<!--","").replace("-->","")
        # htmlText = 响应结果read读取.decode 转换为utf文本.replace 替换掉html中的注释
        # 我们需要的结果在注释中,所以要先替换掉注释标签 <!-- -->
    
        html = BeautifulSoup(htmlText,"lxml")
        # 创建beautifulSoup对象
    
        thread_list=html.select(".j_thread_list")
        # 获取到所有的旅游类别
    
    
        # 遍历旅游列表
        for thread in thread_list:
            title = thread.select(".j_th_tit")[0].get_text()
            author = thread.select(".frs-author-name")[0].get_text()
            time= thread.select(".is_show_create_time")[0].get_text()
            # 提取标题,作者,事件
            print(title) # 打印标签
            data.append([title,author,time])
            # 追加到总数据中
    
    """
    获取到所有的分页地址,最大5页
    url 页面地址
    p=5 最多5页
    """
    def getPage(url,p=5):
        for i in range(5):
            link = url+str(i*50)
            # 再一次拼接 第1页0  第2页50 第3页100 第4页150
            getList(link)
            # 执行获取页面函数getList
    
    """
    写入excel文件
    data 被写入的数据
    """
    def writeExecl(data):
        lens = len(data)
        # 获取页面的长度
        workbook = xlsxwriter.Workbook('travel.xlsx')
        # 创建一个excel文件
        sheet = workbook.add_worksheet()
        # 添加一张工作表
        sheet.write_row("A1",["标题","作者","时间"])
        # 写入一行标题
        for i in range(2, lens + 2):
            sheet.write_row("A"+str(i),data[i - 2])
        # 遍历data 写入行数据到excel
        workbook.close()
        # 关闭excel文件
        print("xlsx格式表格写入数据成功!")
    
    """
    定义主函数
    """
    def main():
        getPage(url,5) #获取分页
        writeExecl(data) #写入数据到excel
    
    # 如果到模块的名字是__main__ 执行main主函数
    if __name__ == '__main__':
        main()

    七、单词表

    main        主要的
    def         (define) 定义
    getPage     获取页面
    writeExcel  写入excel
    workbook    工作簿
    sheet       表
    write_row   写入行
    add         添加
    close       关闭
    len         length长度
    data        数据
    range       范围
    str         (string)字符串
    append      追加
    author      作者
    select      选择
    Beautiful   美丽
    Soup        糖
    herders     头信息
    response    响应
    read        读
    decode      编码
    Request     请求
    parse       解析
    quote       引用

    起源地下载网 » 新人必看!手把手教你使用python爬取百度贴吧

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元