zoukankan      html  css  js  c++  java
  • 利用 selenium 爬取糗事百科

    需要:

    最近看到了selenium介绍,说是可以模拟人类自动打开网页

    很有兴趣,于是学习了下,

    果然:兴趣是最好的老师。

    说明:

    选取糗事百科,因为没有设置爬虫robots,所以用来练手,

    请不要恶意爬取。

    代码如下:

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    
    
    import time 
    from selenium import webdriver 
    from pymongo import MongoClient
    
    
    """
    1. 获取一个标签就是:element
    2. 获取多个标签就是:elements
    """
    
    
    """
    获取标签文本:text
    获取href属性值:get_attribute("href")
    """
    
    def get_db():
        client = MongoClient(host="localhost", port=27017)
        db = client.spider
        collection = db.qiushibaike_selenium
        return collection 
    
    
    def get_text():
        content_list = driver.find_elements_by_class_name("main-list") 
        # print(content_list)
        collection = get_db()
        for item in content_list:
            tm = item.find_element_by_class_name("fr").text
            title = item.find_element_by_class_name("title").text
            link = item.find_element_by_class_name("title").find_element_by_tag_name("a").get_attribute("href")
            text = item.find_element_by_class_name("content").text
            url = driver.current_url
            
            out_dict = {
                "发表时间": tm,
                "文章标题": title,
                "文章完整连接": link,
                "文章内容": text,
                "url": url
            }
            
            print("33[31m将该段子写入数据库中33[0m")
            collection.insert_one(out_dict)
            # print(out_dict)
        
    
    def get_next():
        print("33[32m开始进入下一页33[0m")
        
        try:
            next_page = driver.find_element_by_class_name("next")
            next_page.click()
            return True
        except Exception as e:
            print("这是最后一页啦")
            return False
        
        
    if __name__ == "__main__":
        driver =  webdriver.Firefox()
        driver.get("http://qiushidabaike.com/text_280.html") 
        get_text()
        time.sleep(2)
    
        while get_next():
            get_text()
            time.sleep(5)
        
        
        

    需要掌握的知识点:

    1. mongo数据库的登陆,数据插入,没有这方面基础的同学,可以将爬取到的结果存入到文本文件中;

    2.selenium如何定位元素,需要有一定的html,css基础,如果什么基础都没有,可以看下面的附属小tips;

    3.如何找到下一页,并进行爬取

    附属小tips:

    1.如何定位元素:

     在网页上面找到需要的元素,点击右键--检查元素--复制--Xpath即可,

    2. 爬取内容时,记得设置下休眠时间,减少网站压力,同时也减少由于网页渲染失败导致的错误

  • 相关阅读:
    Brettle.Web.NeatUpload.dll支持的大文件上传
    流媒体服务器架设(转载)
    Photoshop用户必知必会的28个快捷键
    qq服务器Ip
    环球企业家:web2.0创业时代将终结
    真传丹道小周天功.txt
    如何解决管理工具MSC拒绝访问?
    photoshop快捷键大全
    利用ffmpeg把视频文件转换为flv文件
    编写高性能 Web 应用程序的 10 个技巧 转自微软资料
  • 原文地址:https://www.cnblogs.com/lmt921108/p/12941716.html
Copyright © 2011-2022 走看看