import requests
from selenium import webdriver
import time
def grasp(urlT):
driver = webdriver.Chrome(r'C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe') #自动化测试程序工具本地所在地
resAll = [] #用于存储单条数据
rest = {} #用于存储单个数据
urls = []
res=requests.get(urlT)
for i in range(0,29): print(f'第{i+1}条新闻开始')
print(res.json()['data'][i]['title'])
try:
print(res.json()['data'][i]['newsTime'])
except:
print('None')
print(res.json()['data'][i]['source'])
rest['title']=res.json()['data'][i]['title']
try:
rest['newsTime'] = res.json()['data'][i]['newsTime']
except:
rest['newsTime'] = 'None'
rest['source'] = res.json()['data'][i]['source']
url = res.json()['data'][i]['url']
rest['url'] = res.json()['data'][i]['url'] try: driver.get(url)
time.sleep(4)
contend = driver.find_element_by_class_name('text-3zQ3cZD4').text
rest['contend'] = str(contend)
print(f'第{i+1}条新闻结束')
time.sleep(6)
except:
rest['contend'] = '嵌套'
time.sleep(6)
l = driver.find_elements_by_xpath("//p[@class='text-3YbAxaNR']") #获取连接个数
s = driver.find_elements_by_xpath("//p[@class='text-3YbAxaNR']/a") #获取当前页面所有链接
for j in range(0,len(l)):
ss = s[j].get_attribute('href')
print(type(ss))
try:
urls.append(str(str(ss).split()).replace('"','').replace("'","").replace('[','').replace(']','')) #将链接转化为可以存储的字符串
print(urls)
except:
print(driver.find_element_by_class_name('topic-3bY8Hw-9').text) #输出标题
resAll.append(rest)
with open('./news.txt', 'a+', encoding='utf-8') as f:
try:
f.write(''.join(resAll[i].values())+'\n')
except:
print('写入失败') resAll.clear()
print(urls)
for k in range(0,len(urls)):
try:
driver.get(urls[k])
# time.sleep(3)
rest['title1'] = driver.find_element_by_class_name('topic-3bY8Hw-9').text
rest['source1'] = driver.find_element_by_class_name('source-2pXi2vGI').text
rest['newsTime1'] = driver.find_element_by_xpath('//p[@class="time-hm3v7ddj"]/span').text
rest['contend1'] = driver.find_element_by_class_name('text-3zQ3cZD4').text
resAll.append(rest)
time.sleep(4)
with open('./news.txt', 'a+', encoding='utf-8') as f:
time.sleep(5)
f.write(''.join(resAll[k].values()) + '\n')
except:
print('内容太多,服务器禁止') url = "https://shankapi.ifeng.com/spring/finance/index/newInfoIndex/75219" #凤凰网财经的api
t = grasp(url)

爬取凤凰网站财经类的新闻,函数时编程,可全部实现,由于内容量大,需要时间太长,服务器会禁止,为了防止,可以将time.sleep()设置的时间长点的更多相关文章

  1. python爬取凤凰网站的新闻,及其链接地址,来源,时间和内容,用selenium自动化和requests处理数据

    有写规则需要自己定义判断. import requests from selenium import webdriver import time def grasp(urlT): driver = w ...

  2. python爬虫--爬取某网站电影下载地址

    前言:因为自己还是python世界的一名小学生,还有很多路要走,所以本文以目的为向导,达到目的即可,对于那些我自己都没弄懂的原理,不做去做过多解释,以免误人子弟,大家可以网上搜索. 友情提示:本代码用 ...

  3. 利用python的requests和BeautifulSoup库爬取小说网站内容

    1. 什么是Requests? Requests是用Python语言编写的,基于urllib3来改写的,采用Apache2 Licensed 来源协议的HTTP库. 它比urllib更加方便,可以节约 ...

  4. 用Python爬取斗鱼网站的一个小案例

    思路解析: 1.我们需要明确爬取数据的目的:为了按热度查看主播的在线观看人数 2.浏览网页源代码,查看我们需要的数据的定位标签 3.在代码中发送一个http请求,获取到网页返回的html(需要注意的是 ...

  5. webmagic爬取渲染网站

    最近突然得知之后的工作有很多数据采集的任务,有朋友推荐webmagic这个项目,就上手玩了下.发现这个爬虫项目还是挺好用,爬取静态网站几乎不用自己写什么代码(当然是小型爬虫了~~|). 好了,废话少说 ...

  6. python爬虫--爬取某网站电影信息并写入mysql数据库

    书接上文,前文最后提到将爬取的电影信息写入数据库,以方便查看,今天就具体实现. 首先还是上代码: # -*- coding:utf-8 -*- import requests import re im ...

  7. 爬虫系列2:Requests+Xpath 爬取租房网站信息

    Requests+Xpath 爬取租房网站信息 [抓取]:参考前文 爬虫系列1:https://www.cnblogs.com/yizhiamumu/p/9451093.html [分页]:参考前文 ...

  8. python爬虫-基础入门-爬取整个网站《3》

    python爬虫-基础入门-爬取整个网站<3> 描述: 前两章粗略的讲述了python2.python3爬取整个网站,这章节简单的记录一下python2.python3的区别 python ...

  9. python爬虫-基础入门-爬取整个网站《2》

    python爬虫-基础入门-爬取整个网站<2> 描述: 开场白已在<python爬虫-基础入门-爬取整个网站<1>>中描述过了,这里不在描述,只附上 python3 ...

随机推荐

  1. http客户端-性能比较系列-第一篇-单线程

    系列文章: 单线程性能测试:https://www.cnblogs.com/victor2302/p/11077208.html 多线程性能测试:https://www.cnblogs.com/vic ...

  2. JS扫雷小游戏

    HTML代码 <title> 扫雷 </title> <!-- ondragstart:防拖拽生成新页面 oncontextmenu:屏蔽右键菜单--> <b ...

  3. 为什么不建议在hbase中使用过多的列簇

    我们知道,hbase表可以设置一个至多个列簇(column families),但是为什么说越少的列簇越好呢? 官网原文: HBase currently does not do well with ...

  4. Flutter学习笔记(21)--TextField文本框组件和Card卡片组件

    如需转载,请注明出处:Flutter学习笔记(21)--TextField文本框组件和Card卡片组件 今天来学习下TextField文本框组件和Card卡片组件. 只要是应用程序就少不了交互,基本上 ...

  5. H5 API drawImage的参数

    drawImage(this,120,0,180,150,0,0,180,150); //mg图片上的x坐标 img图片上的y坐标 剪切的宽 剪切的高 在canvas上的x坐标 在canvas上的y坐 ...

  6. 一个简单的Python调度器Schedule

    关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...

  7. 基于.net EF6 MVC5+WEB Api 的Web系统框架总结(2)-业务项目搭建

    本节将介绍如何进行业务项目搭建. 本业务项目示例是简单的企业信息管理功能,业务项目采用Code First方式,搭建包括: 创建实体项目 创建实体数据表映射 创建业务处理项目 创建业务Web项目 搭建 ...

  8. ubuntu 用户无法/循环登陆的问题

    安装oracle数据库的时候需要新建用户oracle,使用的命令为:useradd oracle.这样做直接创建了用户oracle,但并没有在home目录下创建oracle用户的文件.在log out ...

  9. PHP学习—了解篇

    了解PHP 了解神器:PhpStudy 一键搭建PHP环境 语法: ​ PHP是一种可以嵌套在HTML页面的脚本语言 嵌套HTML文件: <!DOCTYPE html> <html& ...

  10. 同步vmware虚拟机和主机的时间

    1. 打开虚拟机->设置 2. 选择选项标签页,选中VMware Tools,勾选“将客户机时间与主机同步”