基于selenium无头请求爬取微博文章

这个爬虫的初衷是源于公司的一个项目,公司在建设舆情分析系统,所以需要大量的数据,当然微博这个较大的交际圈有大量的信息,所以老大让我爬微博,但是又给我给了个需求,要自定义爬虫,用户输入一个关键字,爬取和这个关键字有关的全部内容,像这个样子:
在这里插入图片描述
在搜索框内输入咸猫手,把所有的咸猫手全部揪出来,嘻嘻,我纳闷了半天,就想到用selenium爬取,结果还是很好的啦~,看代码:

#注:此为部分代码(重点,嘻嘻)

import time
import re
import pymysql
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from lxml import etree


def weibo_spider(key,time_=None):
    '''
    :param key: 关键字,
    :param time_: 时间,eg:2019-02-09-15:2019-02-10-15
    :return:
    '''
    #加载页面
    #无头请求
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    browser = webdriver.Chrome(chrome_options=chrome_options)
    #
    # browser = webdriver.Chrome()
    wait = WebDriverWait(browser, 10)
    browser.get('https://s.weibo.com')
    input = wait.until(EC.presence_of_element_located((By.XPATH,"//div[@class='search-input']/input")))
    button = wait.until(EC.element_to_be_clickable((By.CLASS_NAME,'s-btn-b')))
    input.clear()
    input.send_keys(key)
    button.click()


    #爬虫函数
    def spider_func(html):
        for item in html.xpath("//div[@class='m-con-l']//div[@class='card']"):
            author = item.xpath(".//a[@class='name']/text()")[0]
            author_url = 'https:' + item.xpath(".//a[@class='name']/@href")[0]
            text_list = item.xpath(".//div[@class='content']/p[@class='txt']/text()")
            text = ''.join(text_list).strip().replace('\n','').replace(' ','')
            time_list = item.xpath(".//div[@class='content']/p[@class='from']/a[@target='_blank']/text()")[0].strip()
            forword_list = item.xpath(".//div[@class='card-act']//li[2]/a/text()")[0]
            comment_list = item.xpath(".//div[@class='card-act']//li[3]/a/text()")[0]
            praise_list = item.xpath(".//div[@class='card-act']//li[4]/a/em/text()")

用selenium有个最头疼的问题就是每次运行就会出现一个页面,我这个要部署到服务器上,当然不能出现那个页面,所以,无头请求就解决了,嘻嘻,其实这个想法出来后,剩余的内容就不怎么难了

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值