selenium爬取新浪滚动新闻

本文详细介绍使用Selenium和Chromedriver进行网页爬取的过程,包括安装配置、版本对应及环境变量设置。通过实例演示如何爬取新浪滚动新闻页面,解析并获取新闻标题、链接和时间等信息。

要爬取的页面如下

地址:https://news.sina.com.cn/roll/#pageid=153&lid=2509&k=&num=50&page=1
在这里插入图片描述

准备工作

1. selenium安装方法

pip3 install selenium

2. chromedriver安装方法

首先下载:http://chromedriver.storage.googleapis.com/index.html
注意:下载版本要和自己的谷歌浏览器的版本对应,例如

chromedriver版本支持的Chrome版本
v2.41v67-69
v2.40v66-68
v2.39v66-68
v2.38v65-67
v2.37v64-66
v2.36v63-65
v2.35v62-64
v2.34v61-63
v2.33v60-62
v2.32v59-61
v2.31v58-60
v2.30v58-60
v2.29v56-58
v2.28v55-57
v2.27v54-56
v2.26v53-55
v2.25v53-55
v2.24v52-54
v2.23v51-53
v2.22v49-52
v2.21v46-50
v2.20v43-48
v2.19v43-47
v2.18v43-46
windows下安装:
  1. 将下载好的文件解压
  2. 将chromedriver.exe移到python安装目录的Script中即可(可以打开环境变量查看python的安装位置)
mac下安装
  1. 打开终端
  2. 输入cd /usr/bin
  3. 输入open .
  4. 然后把下载解压好的chromedriver拖到打开的文件里面
  5. 输入chromedriver --version检查一下
  6. 加入环境变量
    打开终端,输入: cd ~ 回车,会进入~文件夹
    然后输入:touch .bash_profile,回车执行后,
    再输入:open -e .bash_profile 回车
    会在TextEdit中打开这个文件(如果以前没有配置过环境变量,那么这应该是一个空白文档)。如果有内 容,请在结束符前输入,如果没有内容,请直接输入如下语句:
    export PATH=$PATH:/usr/local/bin/ChromeDriver
    
    然后保存文件,就可以看到,已经装好了,接下来就可以爬取了

以下是爬取新浪滚动新闻页面的代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.common.exceptions import TimeoutException
from pyquery import PyQuery as pq

browser = webdriver.Chrome()
wait = WebDriverWait(browser, 10)
# 进入爬取页面
def search():
    try:
        url = 'https://news.sina.com.cn/roll/#pageid=153&lid=2509&k=&num=50&page=1'
        browser.get(url)
        wait.until(EC.presence_of_element_located((By.ID, 'pL_Main')))
        getDetail()
        total = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#d_list > div > span:nth-child(14) > a')))
        return total.text
    except TimeoutError:
        return search()
# 得到具体信息
def getDetail():
    html = pq(browser.page_source,parser="html")
    content = html.find('#d_list')
    uls = content.find('ul').items()
    for ul in uls:
        lis = ul('li').items()
        for li in lis:
            news = {
                'title': li.find('.c_tit a').text(),
                'href': li.find('.c_tit a').attr('href'),
                'time': li.find('.c_time').text()
            }
            print(news)
# 爬取下一页
def next_detail(page_number):
    try:
        nextBotton = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#d_list > div > span:last-child > a')))
        nextBotton.click()
        wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, '#d_list > div > span.pagebox_num_nonce'), str(page_number)))
        getDetail()
    except TimeoutException:
        next_detail(page_number)

def main():
    try:
        total = search()
        total = int(total)
        print(total)
        for i in range(2, total + 1):
            next_detail(i)
    except Exception:
        print(Exception)
    finally:
        browser.close()

if __name__ == '__main__':
    main()


新浪新闻采集程序天宇版 更新日志: v1.2 1、修复首页及文章页错误! 新浪滚动新闻采集程序天宇版简介 新浪新闻采集程序天宇版采用php进行开发,能自动对新浪新闻进行采集。 占用空间小,建站成本低,无需等待,马上就可以拥有海量网站数据; 免更新免维护,管理方便,操作简单,实现全站后台管理的全自动采集; 实现内容页URL路径伪静态功能,让各大搜索引擎收录更加友好; 新浪滚动新闻采集程序天宇版功能介绍: 1.关键词内链 VIP 2.内容过滤 VIP 3.伪原创词汇 VIP 4.模板独立化(支持自己编写模板) 5.支持自定义路径伪静态(更好的搜索引擎亲和力)【无组件支持伪静态】 6.增加强大的缓存功能(极大降低UPU资源占用率) 7.增加蜘蛛访问记录(实时查看各大搜素引擎蜘蛛对网站爬行动态) 8.增加畅言评论功能 9.增加手机版VIP(自动识别手机与PC机访问切换) 10.自动采集百度搜索相关关键词(非常利于SEO) 后台登录admin/ 账号密码都为admin 上传后请及时更改后台登录路径(给admin文件夹重命名) 后续更新敬请期待。。。 广告不是一成不变的客户也可以自主在模板里直接添加广告代码 模板位置:/templets/default/ 带m的为手机版模板 新浪滚动新闻采集程序天宇版前台页面 新浪滚动新闻采集程序天宇版后台管理 后台登录admin/ 账号密码都为admin 后台页面 相关阅读 同类推荐:站长常用源码
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值