python爬取搜狐新闻网站所有新闻的标题和正文并按阅读量排行输出
# _*_ coding: utf-8 _*_
"""实现定量爬取搜狐网站新闻
Author: HIKARI
Version: V 0.2
"""
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
import time
from pyquery import PyQuery as pq
import pymongo
from bs4 import BeautifulSoup
import pandas as pd'新闻url列表'
url_list = []
'新闻url总数'
num = 0
'新闻标题数量'
name_n = 0MONGO_URL = 'localhost'
'新闻标题列表'
title_list = []
'阅读量列表'
reading_list = []
'存储阅读量切割后的字符'
list_cut = []
list_num =[]
'标题与阅读量'
rank = {}"打开搜狐新闻网站后,获取所有板块下的url,在新窗口中爬取其中的标题和正文信息以及阅读量,并实现存储"'存储到mongodb'
def save_mongo(article):MONGO_DB = 'souhu_news'MONGO_COLLECTION = 'news'client = pymongo.MongoClient(MONGO_URL)db = client[MONGO_DB]try:if db[MONGO_COLLECTION].insert_one(article):print("存储成功")except Exception:print("存储失败")'根据阅读量排名输出新闻标题'
def reading_rank(max):global rankglobal reading_listglobal title_listglobal list_cutfor i in range(max):lenth = len(reading_list[i])list_cut.append(reading_list[i][4:lenth-1])for i in range(max):lenth = len(list_cut[i])n = lenth - 1if (list_cut[i][n] == "万"):count = list_cut[i][0:n]list_cut[i] = float(count) * 10000else:list_cut[i] = float(list_cut[i])for i in range(max):rank[title_list[i]] = list_cut[i]rank = dict(rank)dataframe = pd.DataFrame({'标题': title_list, '阅读量': list_cut})print(dataframe)'排序'rank = sorted(rank.items(), key=lambda rank: rank[1], reverse=True)print("根据阅读量排序后为")"创建排名索引"rank_list = []for i in range(1, len(reading_list)+1):rank_list.append(i)rank = pd.DataFrame(rank, index=rank_list, columns=['标题', '阅读量'])rank.to_csv("data.csv")print(rank)class spider_sh():def __init__(self):self.url = 'https://news.sohu.com/'self.browser = webdriver.Chrome()self.wait = WebDriverWait(self.browser, 20)"打开网页"def open(self):self.browser.get(self.url)"获取新的url"def get_new_url(self):print('开始获取新闻url')soup = BeautifulSoup(self.browser.page_source, 'html.parser')newslist = soup.find_all(class_='list16')global numglobal url_listfor url in newslist:for k in url.find_all('a'):new_url = k['href']num = num+1url_list.append(new_url)print('完成获取url')"关闭网页"def close(self):self.browser.close()"开始爬取"def start(self):print('开始爬取')self.open()self.get_new_url()"打开新网页来获取新页面"class new_window():def __init__(self):self.browser = webdriver.Chrome()self.wait = WebDriverWait(self.browser, 20)" 获取标题和正文和阅读量"def get_title_article(self):html = self.browser.page_sourcedoc = pq(html)global title_listglobal reading_listtitle_list.append(doc('.text-title > h1').text())reading_list.append(doc('.read-wrap .read-num').text())article = {'title': doc('.article-page .text .text-title > h1').text(),'article': doc('.article ').text(),'reading': doc('.read-wrap .read-num').text()}save_mongo(article)"关闭网页"def close(self):self.browser.close()"打开网页,开始爬取"def open(self):global url_list'测试,只获取前十个并排名(实际数量为num)'test = 5global numprint('开始爬取文章信息')for n in range(0, test):url = url_list[n]self.browser.get(url)self.get_title_article()self.closeprint('文章信息爬取完毕')reading_rank(test)if __name__ == '__main__':souhu = spider_sh()souhu.start()souhu2 = new_window()souhu2.open()
python爬取搜狐新闻网站所有新闻的标题和正文并按阅读量排行输出相关推荐
- python爬虫搜狐新闻_应用案例2:爬取搜狐体育的新闻信息
爬虫学习使用指南 Auth: 王海飞 Data:2018-06-25 Email:779598160@qq.com github:https://github.com/coco369/knowledg ...
- python证券_基于Python爬取搜狐证券股票过程解析
数据的爬取 我们以上证50的股票为例,首先需要找到一个网站包含这五十只股票的股票代码,例如这里我们使用搜狐证券提供的列表. 可以看到,在这个网站中有上证50的所有股票代码,我们希望爬取的就是这个包含股 ...
- Python爬取搜狐车型数据
主要工具Python+selenium+Excel 因为工作需要想要获得车型参数数据,查找了网络上面的教程和相关的文章都没有达到我想要的效果,所以自己慢慢摸索着写了这些代码,可能有一些代码繁琐且没有必 ...
- Python爬虫——主题爬取搜狐新闻(步骤及代码实现)
目录 一 .实现思路 二.获取url变化规律 三.爬取新闻名称及其超链接 四.判断与主题的契合度 四.输出结果 五.总代码 一 .实现思路 本次爬取搜狐新闻时政类 获取url--爬取新闻名称及其超链接 ...
- #python爬虫#爬取搜狐股票
爬取搜狐股票 完整程序 完整程序 利用搜狐新闻的股票列表,构造url爬取信息 import requests from bs4 import BeautifulSoup import json imp ...
- Python 爬取百度 搜索风云榜 新闻并 自动推送 到邮箱
本文将使用Python爬取百度新闻搜索指数排名前50的新闻,并通过服务器运行,每天定时发送到指定邮箱. 先上代码: # -*- coding:utf-8 -*- import requests,os, ...
- python爬虫股票上证指数_Python爬虫爬取搜狐证券股票数据
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于IT信息教室,作者:M先森看世界 数据的爬取 我们以上证50的股票为例,首先需 ...
- 详解爬取搜狐号自媒体的所有文章
背景 现在有很多自媒体平台,如头条号.搜狐号.大鱼号.百家号等,每个人都可以成为创作者发布自己的作品.如果想把某个作者的文章都下下来,一篇一篇的下载会很麻烦,而用爬虫则会很简单,顺便还能练练手.这里就 ...
- python爬取凤凰新闻网_python凤凰新闻数据分析(一)python爬虫数据爬取
标签的内容 first_new_td = BeautifulSoup(str(first_new[0]),'html.parser') first_new_item = first_new_td.fi ...
最新文章
- Xamarin Android项目运行失败
- python 判断列表list是否为空
- LeetCode Flatten Nested List Iterator(栈)
- The operation couldn’t be completed. (LaunchServicesError error 0.)
- 携程赴港二次上市在即 “旅游营销枢纽”战略助价值重估
- 如何绘制逻辑图— 4. 要素的属性:黑盒与白盒
- embedding在推荐系统中的应用总结,这些你知道吗?
- openstack mysql默认密码_OpenStack 安装数据库和rabbitmq消息队列 (三)
- python 验证码test
- ubuntu 多终端窗口管理: terminator
- ai带来的革命_AI革命就在这里。 这与我们预期的不同。
- 【Unity Native Plugins】1.调用动态库so-android篇 附录完整工程
- 微信朋友圈html5广告,微信朋友圈原生广告页是什么
- 芯片之路: 海思半导体前世今生
- 知乎上那些简短却让你印象深刻的回答
- xy坐标正负方向_道路施工图纸上x坐标和y坐标分别代表什么方向?哪个代表南北方向?哪个代表东西方向?...
- 案例分享:Qt+RV1126+PLC医疗血浆采集仪(中英文输入、西门子PLC、数据库存储,各种数据统计,数值监测,电子秤操作,记录查询,全局报警等等)
- 成功卸载norton antivirus企业版
- element自定义表单label
- 怎么调整图片分辨率?如何修改图片分辨率dpi?
热门文章
- led背光是未来LCD背光技术的发展方向
- 在线制作微信跳转链接源码可以实现微信跳转浏览器打开指定页面的功能
- 17-用python爬取下载女神照片
- AppStore 隐私政策
- 批量计算机添加网络打印机方法,通过IP添加网络打印机打印方法图解
- 力扣49题 字母异位词分组
- TypeError: undefined is not an object (evaluating '_react.default.defaultProps.object') - RN
- Wireshark图解TCP三次握手与四次挥手
- 《华为路由器学习指南》终审目录首度曝光
- certutil工具的用法