Python爬虫实例:新闻总量爬取

2 篇文章 0 订阅
订阅专栏

前言

前段时间出于任务需要,需要爬取上证50指数成分股在某些日期内的新闻数量。

一开始的想法是爬 百度新闻高级搜索,但是后来某一天百度新闻高级搜索突然用不了,无论搜索什么都会跳转到百度主页,至今(2020.06.11)没有恢复,不知道是不是百度公司把这个业务停掉了。

于是只能找替代品了,博主盯上了 中国新闻高级搜索,号称是搜索界的国家队。

分析

网页解析

欲爬虫,首先得解析网页url结构。

首先以全文搜索关键词“工商银行”为例,设置搜索起点2020-01-08,终点2020-01-08,即搜索2020年1月8日这一天关键词“工商银行”的新闻量, 点此进入网页。
主页如下:
在这里插入图片描述
其中,新闻总量便是我们期望爬取的数据,而搜索关键词搜索时间区间是我们在爬虫过程中需要改变的变量。

接着分析其url:http://news.chinaso.com/newssearch.htm?q=%E5%B7%A5%E5%95%86%E9%93%B6%E8%A1%8C&startTime=20200108&endTime=20200108

在这一串url中,前面的http://news.chinaso.com/newssearch.htm?部分代表的是国搜主页,爬虫过程中不需要改动;余下部分则由三个变量构成:q、startTime、endTime。变量q的含义为搜索关键词,在这个url中“%E5%B7%A5%E5%95%86%E9%93%B6%E8%A1%8C”即代表着关键词“工商银行”;变量startTime和endTime即代表着时间起点和终点。

在实际操作过程中,url编码太过繁琐复杂,可直接用中文文本代替,例如,我想搜索2020年1月8日这一天关键词“中国平安”的新闻量,可以如下方式构造url:http://news.chinaso.com/newssearch.htm?q=中国平安&startTime=20200108&endTime=20200108。

对于希望爬取到的数据新闻总量,首先利用F12开发人员工具对其进行定位:
在这里插入图片描述
找到其节点后便可解析新闻量,方法有很多,包括bs、正则等,在这里博主使用正则语句:

num=re.match('<div class="toolTab_xgxwts">为您找到相关新闻(.*)篇</div>',str(retext))

到这里,爬虫最基本的部分就完成了,余下一些头尾部分细节需要处理。

股票数据来源

一开始就说了需要爬取上证50成分股的股票,那首先需要知道成分股有哪些吧。博主了解到一支指数的成分股不是固定的,由于需要爬取的时间周期较长(一年以上),比较稳妥的做法是对于爬取的每个日期都请求一次成分股名单再进行爬取。在这里博主使用了聚宽平台提供的jqdatasdk数据包。首次使用需在 官网注册账号并且在命令行中输入pip install jqdatasdk安装。

在使用过程中,首先需要登录:

jqdatasdk.auth('xxxxxx','xxxxxx')#使用你的账号密码登陆joinquant

接着便可获取历史行情数据:

raw_data_everyday = jqdatasdk.get_index_weights('000016.XSHG', date=temporaryTime1_raw)

从中便可解析出每日的成分股列表,用于循环爬取。

代理IP

在实际操作中发现国搜对于爬虫还是比较严格的(不愧是国家队),需要使用代理ip,具体的ip平台这里不赘述,避免被当作广告,只提一下使用代理ip的方法。

首先构建ip池,从ip提供方复制下可用ip及其端口(当然也可接入其接口)

    proxies_list=['58.218.200.227:8601', '58.218.200.223:3841', '58.218.200.226:3173', '58.218.200.228:8895', '58.218.200.226:8780', '58.218.200.227:6646', '58.218.200.228:7469', '58.218.200.228:5760', '58.218.200.223:8830', '58.218.200.228:5418', '58.218.200.223:6918', '58.218.200.225:5211', '58.218.200.227:8141', '58.218.200.228:7779', '58.218.200.226:3999', '58.218.200.226:3345', '58.218.200.228:2433', '58.218.200.226:6042', '58.218.200.225:4760', '58.218.200.228:2547', '58.218.200.225:3886', '58.218.200.226:7384', '58.218.200.228:8604', '58.218.200.227:6996', '58.218.200.223:3986', '58.218.200.226:6305', '58.218.200.225:6208', '58.218.200.223:4006', '58.218.200.225:8079', '58.218.200.228:7042', '58.218.200.225:7086', '58.218.200.227:8913', '58.218.200.227:3220', '58.218.200.226:2286', '58.218.200.228:7337', '58.218.200.227:2010', '58.218.200.227:9062', '58.218.200.225:8799', '58.218.200.223:3568', '58.218.200.228:3184', '58.218.200.223:5874', '58.218.200.225:3963', '58.218.200.228:3696', '58.218.200.227:7113', '58.218.200.226:4501', '58.218.200.223:7636', '58.218.200.225:9108', '58.218.200.228:6940', '58.218.200.223:5310', '58.218.200.225:2864', '58.218.200.226:5225', '58.218.200.228:6468', '58.218.200.223:8127', '58.218.200.225:8575', '58.218.200.223:7269', '58.218.200.228:7039', '58.218.200.226:6674', '58.218.200.226:5945', '58.218.200.225:3108', '58.218.200.226:3990', '58.218.200.223:8356', '58.218.200.227:5274', '58.218.200.227:6535', '58.218.200.225:3934', '58.218.200.223:6866', '58.218.200.227:3088', '58.218.200.227:7253', '58.218.200.223:2215', '58.218.200.228:2715', '58.218.200.226:4071', '58.218.200.228:7232', '58.218.200.225:5561', '58.218.200.226:7476', '58.218.200.223:3917', '58.218.200.227:2931', '58.218.200.223:5612', '58.218.200.226:6409', '58.218.200.223:7785', '58.218.200.228:7906', '58.218.200.227:8476', '58.218.200.227:3012', '58.218.200.226:6388', '58.218.200.225:8819', '58.218.200.225:2093', '58.218.200.227:4408', '58.218.200.225:7457', '58.218.200.223:3593', '58.218.200.225:2028', '58.218.200.227:2119', '58.218.200.223:3094', '58.218.200.226:3232', '58.218.200.227:6769', '58.218.200.223:4013', '58.218.200.227:9064', '58.218.200.223:6034', '58.218.200.227:4292', '58.218.200.228:5228', '58.218.200.228:2397', '58.218.200.226:2491', '58.218.200.226:3948', '58.218.200.227:2630', '58.218.200.228:4857', '58.218.200.228:2541', '58.218.200.225:5653', '58.218.200.226:7068', '58.218.200.223:2129', '58.218.200.227:4093', '58.218.200.226:2466', '58.218.200.226:4089', '58.218.200.225:4932', '58.218.200.228:8511', '58.218.200.227:6660', '58.218.200.227:2536', '58.218.200.226:5777', '58.218.200.228:4755', '58.218.200.227:4138', '58.218.200.223:5297', '58.218.200.226:2367', '58.218.200.225:7920', '58.218.200.225:6752', '58.218.200.228:4508', '58.218.200.223:3120', '58.218.200.227:3329', '58.218.200.226:6911', '58.218.200.228:7032', '58.218.200.223:8029', '58.218.200.228:2009', '58.218.200.223:3487', '58.218.200.228:9078', '58.218.200.225:3985', '58.218.200.227:6955', '58.218.200.228:8847', '58.218.200.228:4376', '58.218.200.225:3942', '58.218.200.228:4983', '58.218.200.225:9082', '58.218.200.225:7907', '58.218.200.226:6141', '58.218.200.226:5268', '58.218.200.226:4986', '58.218.200.223:8374', '58.218.200.226:4850', '58.218.200.225:5397', '58.218.200.226:2983', '58.218.200.225:3156', '58.218.200.226:6176', '58.218.200.225:4273', '58.218.200.226:8625', '58.218.200.226:8424', '58.218.200.226:5714', '58.218.200.223:8166', '58.218.200.226:4194', '58.218.200.223:6850', '58.218.200.228:6994', '58.218.200.223:3825', '58.218.200.226:7129', '58.218.200.223:3941', '58.218.200.227:8775', '58.218.200.228:4195', '58.218.200.227:4570', '58.218.200.223:3255', '58.218.200.225:6626', '58.218.200.226:8286', '58.218.200.225:4605', '58.218.200.223:3667', '58.218.200.223:7281', '58.218.200.225:6862', '58.218.200.228:2340', '58.218.200.227:7144', '58.218.200.223:3691', '58.218.200.228:3849', '58.218.200.228:7871', '58.218.200.225:6678', '58.218.200.225:6435', '58.218.200.223:3726', '58.218.200.226:8436', '58.218.200.223:7461', '58.218.200.223:4113', '58.218.200.223:3912', '58.218.200.225:4666', '58.218.200.227:7176', '58.218.200.225:5462', '58.218.200.225:8643', '58.218.200.227:7591', '58.218.200.227:2134', '58.218.200.227:5480', '58.218.200.228:9013', '58.218.200.227:5178', '58.218.200.223:8970', '58.218.200.223:5423', '58.218.200.227:2832', '58.218.200.225:5636', '58.218.200.223:2347', '58.218.200.227:4171', '58.218.200.227:5288', '58.218.200.227:4254', '58.218.200.227:3254', '58.218.200.228:6789', '58.218.200.223:4956', '58.218.200.226:6146']

对每次爬虫,从ip池中随机挑选一个ip用于伪装。

def randomip_scrapy(proxies_list,url,headers):
     proxy_ip = random.choice(proxies_list)
     proxies = {'https': 'https://'+proxy_ip,'http':'http://'+proxy_ip}
     R=requests.get(url,headers=headers,proxies=proxies)
     return R

代码实现

所有的技术难点都分析完了,接下来直接放上完整代码,博主应用requests模块请求html:

#遍历股票 遍历日期 输出某股每日数据1*n矩阵 把m支股票数据整合成m*n矩阵
import requests
from bs4 import BeautifulSoup
import re
import datetime 
import random
from retrying import retry
import jqdatasdk
import pandas as pd
import numpy as np

jqdatasdk.auth('xxxxxx','xxxxxx')#使用你的账号登陆joinquant

@retry(stop_max_attempt_number=100)#重试
def randomip_scrapy(proxies_list,url,headers):
     proxy_ip = random.choice(proxies_list)
     proxies = {'https': 'https://'+proxy_ip,'http':'http://'+proxy_ip}
     R=requests.get(url,headers=headers,proxies=proxies)
     return R

#需要做到遍历每一股、每一天的数据
def newsCrawls(start_year,start_month,start_day,proxies_list,time_step,time_count):
    startTime_raw = datetime.date(year=start_year,month=start_month,day=start_day) 
    temporaryTime1_raw = startTime_raw#定义临时日期
    temporaryTime2_raw = startTime_raw+datetime.timedelta(days=time_step)
    #结构化日期
    #startTime = startTime_raw.strftime('%Y%m%d')
    
    j = 0
    #时间序列内遍历
    while j < time_count*time_step:
        #对于每一天,创建三个需要记录数据的存储列表
        name_list_everyday = []
        weight_list_everyday = []
        newsnum_list_everyday = []
        date_list = []
        temporaryTime2_raw = temporaryTime1_raw+datetime.timedelta(days=time_step)
        temporaryTime1 = temporaryTime1_raw.strftime('%Y%m%d')#结构化临时日期1
        temporaryTime2 = temporaryTime2_raw.strftime('%Y%m%d')#结构化临时日期2
        #从jqdata获取数据并解析
        raw_data_everyday = jqdatasdk.get_index_weights('000016.XSHG', date=temporaryTime1_raw)#如果要改指数在这里改
        raw_data_everyday_array = np.array(raw_data_everyday)
        raw_data_everyday_list = raw_data_everyday_array.tolist()
        for list in raw_data_everyday_list:
            name_list_everyday.append(list[1])
            weight_list_everyday.append(list[0])
            date_list.append(list[2])
        j = j + 1
        count = 0
        for name in name_list_everyday:
            
            url="http://news.chinaso.com/newssearch.htm?q="+str(name)+"&type=news&page=0&startTime="+str(temporaryTime1)+"&endTime="+str(temporaryTime2)
            user_agent_list = ["Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36",
                        "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
                        "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36",
                        "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36",
                        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36",
                        "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)",
                        "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15",
                        ]
            
            #cookies="uid=CgqAiV1r244oky3nD6KkAg==; wdcid=5daa44151f0a6fc9; cookie_name=222.16.63.188.1567349674276674; Hm_lvt_91fa1aefc990a9fc21c08506e5983ddf=1567349649,1567349703; Hm_lpvt_91fa1aefc990a9fc21c08506e5983ddf=1567349703; wdlast=1567351002"
            agent = random.choice(user_agent_list)#随机agent
            headers = {
            'User-Agent':agent
            }
            #如选取不可用ip回到这一步
            r = randomip_scrapy(proxies_list,url,headers)
            #proxy_ip = random.choice(proxies_list)
            #proxies = {'https': 'https://'+proxy_ip,'http':'http://'+proxy_ip}
            #r=requests.get(url,headers=headers,proxies=proxies)
            content = r.content
            soup=BeautifulSoup(content,'lxml')
            retext=soup.find(class_='toolTab_xgxwts')
            num=re.match('<div class="toolTab_xgxwts">为您找到相关新闻(.*?)篇</div>',str(retext))
            count = count + 1
            print('第',count,'个')
            if str(num)=='None':#如果没爬到说明该股当天无新闻,输入0
                newsnum_list_everyday.append(0)
            else:
                newsnum_list_everyday.append(int(num.group(1)))
        #下一步就是把每天的四列表存入csv数据库
        a = [num for num in newsnum_list_everyday]
        b = [name for name in name_list_everyday]
        c = [weight for weight in weight_list_everyday]
        d = [date for date in date_list]
        dataframe = pd.DataFrame({'num':a,'name':b,'weight':c,'date':d})
        dataframe.to_csv(r"20181022-20181231.csv",mode = 'a',sep=',',encoding="gb2312")
        temporaryTime1_raw = temporaryTime1_raw+datetime.timedelta(days=time_step)#日期+步长
        
            



if __name__ == "__main__":
    proxies_list=['58.218.200.227:8601', '58.218.200.223:3841', '58.218.200.226:3173', '58.218.200.228:8895', '58.218.200.226:8780', '58.218.200.227:6646', '58.218.200.228:7469', '58.218.200.228:5760', '58.218.200.223:8830', '58.218.200.228:5418', '58.218.200.223:6918', '58.218.200.225:5211', '58.218.200.227:8141', '58.218.200.228:7779', '58.218.200.226:3999', '58.218.200.226:3345', '58.218.200.228:2433', '58.218.200.226:6042', '58.218.200.225:4760', '58.218.200.228:2547', '58.218.200.225:3886', '58.218.200.226:7384', '58.218.200.228:8604', '58.218.200.227:6996', '58.218.200.223:3986', '58.218.200.226:6305', '58.218.200.225:6208', '58.218.200.223:4006', '58.218.200.225:8079', '58.218.200.228:7042', '58.218.200.225:7086', '58.218.200.227:8913', '58.218.200.227:3220', '58.218.200.226:2286', '58.218.200.228:7337', '58.218.200.227:2010', '58.218.200.227:9062', '58.218.200.225:8799', '58.218.200.223:3568', '58.218.200.228:3184', '58.218.200.223:5874', '58.218.200.225:3963', '58.218.200.228:3696', '58.218.200.227:7113', '58.218.200.226:4501', '58.218.200.223:7636', '58.218.200.225:9108', '58.218.200.228:6940', '58.218.200.223:5310', '58.218.200.225:2864', '58.218.200.226:5225', '58.218.200.228:6468', '58.218.200.223:8127', '58.218.200.225:8575', '58.218.200.223:7269', '58.218.200.228:7039', '58.218.200.226:6674', '58.218.200.226:5945', '58.218.200.225:3108', '58.218.200.226:3990', '58.218.200.223:8356', '58.218.200.227:5274', '58.218.200.227:6535', '58.218.200.225:3934', '58.218.200.223:6866', '58.218.200.227:3088', '58.218.200.227:7253', '58.218.200.223:2215', '58.218.200.228:2715', '58.218.200.226:4071', '58.218.200.228:7232', '58.218.200.225:5561', '58.218.200.226:7476', '58.218.200.223:3917', '58.218.200.227:2931', '58.218.200.223:5612', '58.218.200.226:6409', '58.218.200.223:7785', '58.218.200.228:7906', '58.218.200.227:8476', '58.218.200.227:3012', '58.218.200.226:6388', '58.218.200.225:8819', '58.218.200.225:2093', '58.218.200.227:4408', '58.218.200.225:7457', '58.218.200.223:3593', '58.218.200.225:2028', '58.218.200.227:2119', '58.218.200.223:3094', '58.218.200.226:3232', '58.218.200.227:6769', '58.218.200.223:4013', '58.218.200.227:9064', '58.218.200.223:6034', '58.218.200.227:4292', '58.218.200.228:5228', '58.218.200.228:2397', '58.218.200.226:2491', '58.218.200.226:3948', '58.218.200.227:2630', '58.218.200.228:4857', '58.218.200.228:2541', '58.218.200.225:5653', '58.218.200.226:7068', '58.218.200.223:2129', '58.218.200.227:4093', '58.218.200.226:2466', '58.218.200.226:4089', '58.218.200.225:4932', '58.218.200.228:8511', '58.218.200.227:6660', '58.218.200.227:2536', '58.218.200.226:5777', '58.218.200.228:4755', '58.218.200.227:4138', '58.218.200.223:5297', '58.218.200.226:2367', '58.218.200.225:7920', '58.218.200.225:6752', '58.218.200.228:4508', '58.218.200.223:3120', '58.218.200.227:3329', '58.218.200.226:6911', '58.218.200.228:7032', '58.218.200.223:8029', '58.218.200.228:2009', '58.218.200.223:3487', '58.218.200.228:9078', '58.218.200.225:3985', '58.218.200.227:6955', '58.218.200.228:8847', '58.218.200.228:4376', '58.218.200.225:3942', '58.218.200.228:4983', '58.218.200.225:9082', '58.218.200.225:7907', '58.218.200.226:6141', '58.218.200.226:5268', '58.218.200.226:4986', '58.218.200.223:8374', '58.218.200.226:4850', '58.218.200.225:5397', '58.218.200.226:2983', '58.218.200.225:3156', '58.218.200.226:6176', '58.218.200.225:4273', '58.218.200.226:8625', '58.218.200.226:8424', '58.218.200.226:5714', '58.218.200.223:8166', '58.218.200.226:4194', '58.218.200.223:6850', '58.218.200.228:6994', '58.218.200.223:3825', '58.218.200.226:7129', '58.218.200.223:3941', '58.218.200.227:8775', '58.218.200.228:4195', '58.218.200.227:4570', '58.218.200.223:3255', '58.218.200.225:6626', '58.218.200.226:8286', '58.218.200.225:4605', '58.218.200.223:3667', '58.218.200.223:7281', '58.218.200.225:6862', '58.218.200.228:2340', '58.218.200.227:7144', '58.218.200.223:3691', '58.218.200.228:3849', '58.218.200.228:7871', '58.218.200.225:6678', '58.218.200.225:6435', '58.218.200.223:3726', '58.218.200.226:8436', '58.218.200.223:7461', '58.218.200.223:4113', '58.218.200.223:3912', '58.218.200.225:4666', '58.218.200.227:7176', '58.218.200.225:5462', '58.218.200.225:8643', '58.218.200.227:7591', '58.218.200.227:2134', '58.218.200.227:5480', '58.218.200.228:9013', '58.218.200.227:5178', '58.218.200.223:8970', '58.218.200.223:5423', '58.218.200.227:2832', '58.218.200.225:5636', '58.218.200.223:2347', '58.218.200.227:4171', '58.218.200.227:5288', '58.218.200.227:4254', '58.218.200.227:3254', '58.218.200.228:6789', '58.218.200.223:4956', '58.218.200.226:6146']
    
    
    newsCrawls(2018,12,17,proxies_list,1,15)#年、月、日、时间步长、多少个时间步长
    #22.46

总结

这次项目规模不算小,但是要解决的技术难点均为爬虫的基本问题,所以整体难度不算太高。在这次项目中博主算是首次完整地应用了所学的爬虫知识,包括数据获取,网页解析,ip欺骗,数据清洗等。也算是对自己的一次锻炼。

原文链接:https://blog.csdn.net/chandler_scut/article/details/106685617

(九)python网络爬虫(理论+实战)——爬虫实战:指定关键词的百度新闻爬取
c1007857613的专栏
02-21 9065
本节主要是介绍了如何编写一个爬虫项目来实现指定关键词的百度新闻爬取,并进一步巩固用正则表达式来解析爬取的数据。巩固正则表达式的规则和常用的方法,掌握正则表达式在实际爬虫项目中的应用。
Python爬虫实例爬取豆瓣电影TOP250
04-28
Python爬虫实例爬取豆瓣电影TOP250
Python爬虫 | 爬取环境新闻实战
m0_59236127的博客
02-23 1364
(2)第一页的url为“http://hbj.wuhan.gov.cn/hjxw/index.shtml”,,第二页的url“http://hbj.wuhan.gov.cn/hjxw/index_1.shtml”为那么之后第N页的url为在后面加上_ {i},即为“http://hbj.wuhan.gov.cn/hjxw/index_{i}.shtml”Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
百度新闻资讯挖掘案例实战
qq_73684871的博客
05-12 866
百度新闻是广大网友获取资讯常用平台,同时也是金融人了解当今时下舆情数据及对投资行业分析的主要获取源。本文章将以爬取股票恒生电子(600570)新闻为例,带来关于利用python中requests库对百度新闻的数据爬取
python爬虫实战之新闻信息(二)
lucky_myj的博客
10-19 259
爬取新浪搜索指定内容的新闻信息
python新闻并统计每个词出现的次数_python数据分析:jieba模块对数据进行切词并统计出现每个词的次数 | linux系统运维...
weixin_39644713的博客
11-21 424
摘要使用python的jieba切词模块,对文本数据进行分词并统计个数(collections.Counter模块进行统计),这样方便了我们分析数据。要使用jieba模块分词的话,还需要自己建立一个适合自己行业的词性字典,否则切出来的词,很多并不是你想要的。这次分词的目地就是要查看生产数据库中,发货表中的数据,看看哪些货源发源最多,统计出这些货源的数量这次切词采用python的jieba切词模块先...
Python网络爬虫实战1:百度新闻数据爬取
热门推荐
简时刻的博客
06-10 1万+
百度新闻网址:https://news.baidu.com/
百度新闻资讯类信息爬虫--统计一年内关键词新闻的条数
成功唯有积累,没有奇迹。
03-11 2011
背景 临时接了个小需求,通过百度词条搜索,来查找300个关键词,在一年内发布新闻的条数。 最终效果实现如下: 实现思路 实现思路依然是: 先根据多页的url,来找到规律,构建起一页的url; 对单页的url解析,拿到其时间,按时间做dict求数目。同时注意如何判断最末页的条件。因为这里的末页改变后,页面仍然能响应出内容,因此我的解决方法是每次获取单页的第一条url,如果下一页的url与这条一致,那就属于到最后一页了,退出。 先生成一年的date,然后拿date去取该日对应的资讯条数。结
爬虫程序提取信息(统计符合条件的文件数量
s136424的博客
01-30 1225
百度高级检索
justisme的博客
07-26 3756
搜索引擎高级检索,适用于百度和谷歌。双引号,-,site,intitle,filetype,<<>>
python怎么做数据统计-新闻联播也可以拿用Python来做数据分析
weixin_37988176的博客
10-30 730
原标题:新闻联播也可以拿用Python来做数据分析?数据准备获取近10年的新闻联播文本有两个方法,一是自己写爬虫,将CCTV网站的新闻联播网页爬取下来,二是通过Tushare SDK的API免费获取数据。如果是自己爬,好处是可以锻炼自己的爬虫编程能力,磨练自己被可能不统一的网页格式虐心千百遍还不砸电脑的心态意志。坏处是爬数据,清洗数据确实浪费时间,搞不好真有可能费电脑。当然如果直接通过Tushar...
python爬虫教程:实例讲解Python爬取网页数据
01-20
这篇文章给大家通过实例讲解了Python爬取网页数据的步骤以及操作过程,有兴趣的朋友跟着学习下吧。 一、利用webbrowser.open()打开一个网站: >>> import webbrowser >>> webbrowser.open('...
python爬虫爬取新浪新闻数据
01-20
我们可以试试爬取新浪新闻首页,我们发现会返回403 ,因为对方服务器会对爬虫进行屏蔽。此时,我们需要伪装成浏览器才能爬取。 1.实战分析: 浏览器伪装一般通过报头进行: 打开某个网页,按F12—Network— 任意点一个...
SpringBoot中实现发送邮件
最新发布
m0_64289188的博客
04-30 386
当你添加了spring-boot-starter-mail依赖后,Spring Boot会自动配置JavaMailSender实例,并根据application.yml文件中的属性来配置这个实例。你可以直接在需要发送邮件的地方通过@Autowired注解将JavaMailSender实例注入到你的类中,然后使用它来发送邮件。:首先,需要在你的pom.xml文件中添加Spring Boot的邮件发送器依赖。,简化了在Spring Boot应用程序中发送电子邮件的设置过程。Spring Boot的。
Day25-Java基础之常用类1
m0_46053885的博客
04-27 889
同时我们发现Math类中的方法都是静态的,因此在使用的时候我们可以直接通过类名去调用。对于计算机而言,其实是没有数据类型的概念的,都是0101010101,数据类型是编程语言自己规定的,所以在实际存储的时候,先把具体的数字变成二进制,每32个bit为一组,存储在数组中。比较内存地址值一般情况下是没有意义的,我们希望比较的是对象的属性,如果两个对象的属性相同,我们认为就是同一个对象;如果我们的数据是一个浮点类型的数据,有的时候计算机并不会将这个数据完全转换成一个二进制数据,而是将这个将其转换成一个无限的。
链表刷题集
yajunjiao的专栏
04-30 281
本文主要列举了一些刷的题,不多,有那么几道,也建议各位去建立自己的刷题集。积少成多。
AttributeError: module ‘numpy‘ has no attribute ‘float‘.的解决方法
chen_znn的博客
04-30 324
本文记录了AttributeError: module 'numpy' has no attribute 'float'.的解决方法
Python 发送钉钉消息(markdown格式)
qq_43773590的博客
04-30 195
【代码】Python 发送钉钉消息(markdown格式)
python爬虫入门:如何爬取招聘网站并进行分析
01-15
Python爬虫是一种用于自动化获取网页信息的技术,通常用于从网站上获取数据并进行分析,其中包括招聘网站上的招聘信息。要开始爬取招聘网站并进行分析,你可以按照以下步骤进行: 1. 安装Python和相关的库:首先,...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Matlab数值分析实例:三次样条插值 18199
  • 在Latex中插入FontAwesome图标 8312
  • 分享一个Latex一页纸简历模板(中英文) 4226
  • Python数据挖掘实例:K均值聚类 3747
  • Python爬虫实例:新闻总量爬取 2895

分类专栏

  • bug处理 1篇
  • Python爬虫 2篇
  • Matlab 1篇
  • latex交流 2篇
  • Python数据挖掘 1篇

最新评论

  • Python爬虫实例:新闻总量爬取

    Love Clementine: 博主您好,我也使用了您使用的中国新闻高级搜索这个地方,但是我复制您的中国平安的查询的时候,得到的URL和您的不一样,我得到的URL显示的是AllResults(您这边显示的是newssearch.htm?),相当于新闻信息的时间没有被成功限定,我不知道为什么,希望您有空帮我看下哈~

  • Python数据挖掘实例:K均值聚类

    sunnysuffix: 感谢

  • Python数据挖掘实例:K均值聚类

    Charles-D: 很有帮助!

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • Python爬虫实例:豆瓣Top250榜单爬取
  • Matlab数值分析实例:三次样条插值
  • 在Latex中插入FontAwesome图标
2020年6篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司和县百姓网标王价格北京网站优化软件报价重庆网站建设推荐兴安盟设计公司网站推荐中山网站搭建多少钱崇左网站制作哪家好坪山建站多少钱湛江百度标王价格大浪网络推广报价双龙网站改版公司娄底高端网站设计公司赤峰SEO按效果付费多少钱盐田百姓网标王推荐潜江模板制作张家口高端网站设计公司商洛网站优化新乡SEO按天计费推荐咸宁seo排名价格萍乡网站定制价格观澜外贸网站制作推荐白城优化哪家好崇左设计公司网站多少钱阳泉网站优化按天计费哪家好德州营销网站多少钱哈密模板制作公司秦皇岛企业网站建设报价临猗营销网站多少钱上饶网站推广哪家好深圳网站优化软件公司张北设计公司网站公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化