课时20-附-一点资讯-采集媒体号最新文章情况

成果

采集地址:
http://www.yidianzixun.com/home?page=channel&id=m115702

def morelinks()

写入媒体号的id(存放在list[]),产生对应的内容列表地址 url_list[]传入result(content),进行采集
注意事项:
1.似乎只能采集“最新”的100条
2.似乎没必要用header

result(content)

采集内容,根据媒体号生成内容
注意事项:
1.无法使用BeautifulSoup,暂时使用正则
2.有些参数不一定都存在,需要做好判断
3.似乎没必要用header
4.分开存储,如何命名,目前他的内容有频道名称,如果没有其他参数在内容中,可能需要继续根据ID做文章,而且ID需要和频道名字做好对应

代码

#!/usr/bin/env python
#-*- coding: utf-8 -*-
import requests #有s
import re
import time
time1 = time.strftime("%H:%M:%S").replace(':','-')
path ='./'
def morelinks():#目前只能采集前100条
    headers = {
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
        'Accept-Encoding': 'gzip, deflate, sdch',
        'Accept-Language': 'zh-CN,zh;q=0.8',
        'Cache-Control': 'max-age=0',
        'Connection': 'keep-alive',
        'Cookie': 'JSESSIONID=f27f890fbaef32cf20c08ff15d664ebd368d772d21cc0323f12ba1d3b9df031e; ' \
                  'BUILD_VERSION=1475117891169; captcha=s%3A2532aa295d28e9dcc859d5da9b7fd568.FhTz501pKnp4i5QOlhAUnG6tGdkmTcIoZhDnFyV1m3Q; ' \
                  'Hm_lvt_15fafbae2b9b11d280c79eff3b840e45=1475798099; Hm_lpvt_15fafbae2b9b11d280c79eff3b840e45=1475798372; ' \
                  'CNZZDATA1255169715=222495866-1475797495-%7C1475797495; ' \
                  'cn_9a154edda337ag57c050_dplus=%7B%22distinct_id%22%3A%20%221579c6be96b1e3-0f1807e544289-4045022a-1fa400' \
                  '-1579c6be96c318%22%2C%22%24_sessionid%22%3A%200%2C%22%24_sessionTime%22%3A%201475799327%2C%22%24dp%22%3A%200%2C%22%24_' \
                  'sessionPVTime%22%3A%201475799327%2C%22%E6%9D%A5%E6%BA%90%E6%B8%A0%E9%81%93%22%3A%20%22%22%2C%22initial_view_' \
                  'time%22%3A%20%221475797495%22%2C%22initial_referrer%22%3A%20%22%24direct%22%2C%22initial_referrer_domain%22%3A%20%22%24direct%22%2C%22%24' \
                  'recent_outside_referrer%22%3A%20%22%24direct%22%7D',
        'Host': 'www.yidianzixun.com',
        'Upgrade-Insecure-Requests': '1',
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36'
    }#没什么用
    list = ['m118533', 'm115702',]#媒体号的ID
    url_list = ['http://www.yidianzixun.com/api/q/?path=channel|news-list-for-channel&channel_id={}' \
                '&fields=docid&fields=category&fields=date&fields=image&fields=image_urls' \
                '&fields=like&fields=source&fields=title&fields=url' \
                '&fields=comment_count&fields=summary&fields=up&cstart=00&cend=100&version=999999&infinite=true'.format(
        i) for i in list]
    for url in url_list:#产生对应的内容地址
        web_date = requests.get(url, headers=headers)
        content = web_date.text.split('}')
        id = re.match(r'^.+&channel_id=(.*?)&.+$',url)
        print(id.group(1))
        result(content)

def result(content):#数据直接采集
    from_name = re.match(r'^.+"landing_title":"(.*?)-.+$', str(content[2]))
    print(from_name.group(1))
    path_final = path + from_name.group(1) + time1 + '.txt'
    print(path_final)
    with open(path_final,'a+') as text:
     for i in range(1,len(content)-3):
            none ='0'
            detail_list=[]
            title=re.match(r'^.+"title":"(.*?)".+$',str(content[i]))if re.match(r'^.+"title":(.*?),".+$',str(content[i]))\
            else re.match(r'^(.*)$',none)
            detail_list.append(title.group(1))
            date=re.match(r'^.+"date":"(.*?)".+$',str(content[i]))if re.match(r'^.+"date":(.*?),".+$',str(content[i]))\
            else re.match(r'^(.*)$',none)
            detail_list.append(date.group(1))
            summary=re.match(r'^.+"summary":"(.*?)".+$',str(content[i]))if re.match(r'^.+"summary":(.*?),".+$',str(content[i]))\
            else re.match(r'^(.*)$',none)
            detail_list.append(summary.group(1))
            url=re.match(r'^.+"url":"(.*?)".+$',str(content[i]))if re.match(r'^.+"url":(.*?),".+$',str(content[i]))\
            else re.match(r'^(.*)$',none)
            detail_list.append(url.group(1).replace('\\',''))
            category=re.match(r'^.+"category":"(.*?)".+$',str(content[i]))if re.match(r'^.+"category":(.*?),".+$',str(content[i]))\
            else re.match(r'^(.*)$',none)
            detail_list.append(category.group(1))
            comment_count=re.match(r'^.+"comment_count":(.*?),".+$',str(content[i]))if re.match(r'^.+"comment_count":(.*?),".+$',str(content[i]))\
            else re.match(r'^(.*)$',none)
            detail_list.append(comment_count.group(1))
            up=re.match(r'^.+"up":(.*?),".+$',str(content[i]))if re.match(r'^.+"up":(.*?),".+$',str(content[i]))\
            else re.match(r'^(.*)$',none)
            detail_list.append(up.group(1))
            like = re.match(r'^.+"like":(.*?),".+$',str(content[i]))if re.match(r'^.+"like":(.*?),".+$',str(content[i]))\
            else re.match(r'^(.*)$',none)
            detail_list.append(like.group(1))
            print(str(i)+'\n' +'title: '+title.group(1)+'\n'+'date: '+date.group(1)+'\n'+
              'summary: '+summary.group(1)+'\n'+'url: '+url.group(1).replace('/','')+'\n'+
              'category: '+category.group(1)+'\n'+ 'comment_count: '+comment_count.group(1)+'\n'+
              'up: '+up.group(1)+'\n'+'like: '+like.group(1)+'\n')
            text.write((str(detail_list))+'\n')

#web_date = requests.get(test_url, headers=headers)
#content = web_date.text.split('}')
#result(content)
morelinks()

总结

1.似乎只能采集100条,意义不大了- -
2.注意下list[]的写法

url_list = ['hehe{}'.format(
        i) for i in list]

3.re.match(),要最短,不贪婪
虽然参数都是在一句话中的,当因为不是所有参数都出现,顺序会变,为了检查方便只需写最简单的,

up=re.match(r'^.+"up":(.*?),".+$',str(content[i]))

4.同上,采集的时候还需要做好内容判断,注意这里的ifelse写法,以及无结果的时候,配上什么去填:

none ='0'
summary=re.match(r'^.+"summary":"(.*?)".+$',str(content[i]))if re.match(r'^.+"summary":(.*?),".+$',str(content[i]))\
            else re.match(r'^(.*)$',none)

5.以后优先考虑移动端

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,644评论 18 139
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,383评论 0 17
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,938评论 6 13
  • # 一度蜜v3.0协议 --- # 交互协议 [TOC] ## 协议说明 ### 请求参数 下表列出了v3.0版协...
    c5e350bc5b40阅读 641评论 0 0
  • · 正· 文· 来· 啦· 1. 又掉粉了,魂蛋!—— 每天早上打开公众号后台,你都会冒出这句脏话。 “骂我干啥,...
    说科技的小布阅读 244评论 0 0