码迷,mamicode.com
首页 > 其他好文 > 详细

利用 selenium 爬取糗事百科

时间:2020-05-23 12:51:48      阅读:51      评论:0      收藏:0      [点我收藏+]

标签:insert   ict   exce   cal   strong   webdriver   插入   糗事百科   except   

需要:

最近看到了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("\033[31m将该段子写入数据库中\033[0m")
        collection.insert_one(out_dict)
        # print(out_dict)
    

def get_next():
    print("\033[32m开始进入下一页\033[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. 爬取内容时,记得设置下休眠时间,减少网站压力,同时也减少由于网页渲染失败导致的错误

利用 selenium 爬取糗事百科

标签:insert   ict   exce   cal   strong   webdriver   插入   糗事百科   except   

原文地址:https://www.cnblogs.com/lmt921108/p/12941716.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!