技术标签: 爬虫
import json
import redis
import time
import requests
session = requests.session()
import logging.handlers
import pickle
import sys
import re
import datetime
from bs4 import BeautifulSoup
import importlib
import csv
import string
import zhon.hanzi
import sys
importlib.reload(sys)
punce = string.punctuation
puncz = zhon.hanzi.punctuation
f = open('0905/0905原文.csv','a',encoding='utf-8',newline='')
fp = open('0905/0905段落.csv','a',encoding='utf-8',newline='')
csv_article = csv.writer(f)
csv_para = csv.writer(fp)
def getNewsDetail(newsurl):
news_p=[]
p1=''
res = requests.get(newsurl)
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text,'html.parser')
# news_p.append([p.text.strip() for p in soup.select('.u-mainText p')])
for p in soup.select('.u-mainText p'):
p1 = p1 + p.text.strip().replace('\n','')
if len(p1) >= 200 and len(p1) <= 500 :
news_p.append(p1)
p1 = ''
# if p1 != '':
# news_p.append(p1)
news_article = ' '.join([p.text.strip().replace('<br/>','') for p in soup.select('.u-mainText p')])
return news_article, news_p
def spider():
# pages = [57918,57919,234399,234400]
pages = ['','_2','_3','_4','_5',
'_6','_7','_8','_9','_10']
for onepage in pages:
#组合url
url = "http://mil.gmw.cn/node_8979"+onepage+".htm"
print(url)
# 伪装请求头
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
}
result = session.get(url=url,headers=headers).content
soup = BeautifulSoup(result,'html.parser')
if soup is None:
break
#找到新闻列表
result_div = soup.find('div', attrs={
'class': 'channelLeftPart'}).find_all('div')[1].find_all('ul', attrs={
'class': 'channel-newsGroup'})
# findall('ul', attrs={'class': 'channel-newsGroup'})
#去下换行
result_replace = str(result_div).replace('\n','').replace('\r','').replace('\t','')
#正则匹配信息
result_list = re.findall('<li>(.*?)</li>',result_replace)
for i in result_list:
# http://mil.gmw.cn/2020-09/04/content_34157244.htm
news_url = 'http://mil.gmw.cn/' + re.findall('<a href="(.*?)" target=',i)[0]
news_name = re.findall('target="_blank">(.*?)</a>',i)[0]
print(news_name)
# news_time = re.findall('<span class="time">\((.*?)\)</span>',i)[0]
# 标题-段落
news_article, news_p = getNewsDetail(news_url)
for p1 in news_p:
if p1!='':
csv_para.writerow([p1.replace("\u00a0", ""), news_name.replace("\u00a0", "")])
# 标题-原文
if news_article!='':
csv_article.writerow([news_name.replace("\u00a0", ""), news_article.replace("\u00a0", "")])
time.sleep(3)
spider()
f.close()
# -*- coding:utf-8 -*-
import json
import time
import requests
session = requests.session()
import logging.handlers
import pickle
import sys
import re
import datetime
from bs4 import BeautifulSoup
import importlib
import csv
import string
import zhon.hanzi
import sys
importlib.reload(sys)
punce = string.punctuation
puncz = zhon.hanzi.punctuation
f = open('0906/0906electron原文.csv','w+',encoding='utf-8',newline='')
fp = open('0906/0906electron段落.csv','w+',encoding='utf-8',newline='')
csv_article = csv.writer(f)
csv_para = csv.writer(fp)
allparas = []
def getNewsDetail(newsurl):
news_p=[]
p1=''
# res = requests.get(newsurl)
# res.encoding = 'utf-8'
result = session.get(url=newsurl)
soup = BeautifulSoup(result.text,'html.parser')
# news_p.append([p.text.strip() for p in soup.select('.u-mainText p')])
for p in soup.select('.newsContent p'):
p1 = p1 + p.text.replace('\n','')
if len(p1) >= 200 and len(p1) <= 500 :
news_p.append(p1)
p1 = ''
news_article = ' '.join([p.text.strip().replace('\n','') for p in soup.select('.newsContent p')])
return news_article, news_p
def spider():
# pages = [57918,57919,234399,234400]
# http://www.dsti.net/Information/HyeList/aviation/ 0-487页
# http://www.dsti.net/Information/HyeList/spaceflight 0-48页
# http://www.dsti.net/Information/HyeList/electron/ 1,30
for page in range(1,30):
#组合url
# url = "http://mil.gmw.cn/node_8979"+onepage+".htm"
# url = "http://www.dsti.net/Information/HyeList/spaceflight/" + str(page)
url = "http://www.dsti.net/Information/HyeList/electron/" + str(page)
print(url)
# 伪装请求头
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
}
result = session.get(url=url,headers=headers).content
# soup = BeautifulSoup(result,'html.parser').encode('GBK','ignore').decode('GBK')
soup = BeautifulSoup(result, 'html.parser',from_encoding="gb18030")
if soup is None:
break
# req = requests.get(headers=headers, url=url)
# content = req.content
# soup = content.decode('gbk')
# res = requests.get(url=url, headers=headers)
# res.encoding = 'gb18030'
# soup = BeautifulSoup(res.text, 'html.parser')
#找到新闻列表
result_div = soup.find('div', attrs={
'class': 'listMidContent'}).find('ul')
# result_div = result_div.encode('GBK','ignore').decode('GBK')
#去下换行
result_replace = str(result_div).replace('\n','').replace('\r','').replace('\t','')
#正则匹配信息
result_list = re.findall('<li><h1>.(.*?)</h1>',result_replace)
for i in result_list:
# http://www.dsti.net/Information/News/120652
news_url = 'http://www.dsti.net/' + re.findall('href="(.*?)" target="_blank">',i)[0]
news_name = re.findall('target="_blank">(.*?)</a>',i)[0]
# news_time = re.findall('<span class="time">\((.*?)\)</span>',i)[0]
# 标题-段落
news_article, news_p = getNewsDetail(news_url)
for p1 in news_p:
if p1!='':
csv_para.writerow([p1.replace("\u00a0", ""), news_name.replace("\u00a0", "")])
# 标题-原文
if news_article!='':
csv_article.writerow([news_name.replace("\u00a0", ""), news_article.replace("\u00a0", "")])
# time.sleep(1)
spider()
f.close()
可视化实验2——用D3做图表D3相对来Echarts来说,是比较难的。因为Echarts有专门的各种图表的模板,到时候只要在代码中添加某个图表,然后修改数据内容即可。但是D3则所有的东西都得是自己写,坐标轴啦、图表啦等都得自己画。但这也体现了D3的充分可创造性,没有做不到,只有想不到。。。不过有一点要注意,若使用到json地图数据的话,得用火狐浏览器打开才行,其它的不支持。。。1_d3实现省地图
Hive中collect相关的函数有collect_list和collect_set。它们都是将分组中的某列转为一个数组返回,不同的是collect_list不去重而collect_set去重。做简单的实验加深理解,创建一张实验用表,存放用户每天点播视频的记录:create table t_visit_video (username string,video_name string) partit..._collect_list() mysql
开发四年只会写业务代码,分布式高并发都不会还做程序员? >>> 一、软件介绍PDMan是一...
最近在学习一些期权方面的知识,希望有一个期权的回测环境,方便自己做一些测试。初步做了一些功课之后,打算从通达信软件获得期权数据,并使用backtrader进行回测。编程语言使用python。下载期权数据通达信股票软件有一个“盘后数据下载”的功能,可以下载股票、基金、期权等交易品种的日线和分钟线数据。其它实际使用通达信的券商软件,如招商证券的一户通,也可以使用这个功能下载。下载后的数据放在软件安装目录的vipdoc子目录下。如下图所示:其中期权日线数据在vipdoc\ds\lday目录下,上交所ETF_平值期权隐含波动率iv数据下载
作为一个好的Restfull Api不仅在于service url的语义,可读性,幂等,正交,作为http状态码也很重要,一个好的Http Status Code给使用者一个很好的响应,比如200表示正常成功,201表示创建成功,409冲突,404资源不存在等等。所以在做一个基于node.js+mongodb+angularjs的demo时发现node.js express没有提供相应...
简述功能概要最近有需求做一个数据可视化的功能 会具体显示全国各地区的买家分布情况鼠标放置在地图上会显示当前城市的分布人数 点击当前省份会下钻到城市地图 会显示当前省市下各个城市的买家数和分布情况如果遇到没有下一级再次点击会进行返回到国家地图(目前该示例图是两级下钻 省>区市 )(还可以实现点击按钮返回到上一级)右侧数据表会跟随城市的切换而进行动态切换(无视数据的准确性)准备工作首先需要所有城市地图的json文件和一个城市行政区域划代码的js文件(本文件请求使用)(如有需..._三级下钻vue
引言 在成熟条码技术在物流各类中越来越普及应用的背景下,在对RFID(射频标签)自动标识技术开发、应用前景的一片怀疑和争论声中,一些IT和供应链的领导者们又提出EPC技术(电子产品代码)和物连网的概念蓝图。那么,EPC与RFID到底是什么关系?EPC会取代条码吗?这些问题使业界和物流信息技术用户困惑和茫然,急需一个科学的辨析和合乎逻辑的解释。 1 . 条码..._电子货架标识和射频标签
平时作业题一、单项选择题,每题有一个正确选择1、以太网协议中802由来? [5.2节:C IEEE802参考模型]A) 电话区号 B) 地理位置 C) 年月 D) 编号2、有关光缆陈述正确的是() [2.3节: C 传输媒体 ]A) 光缆的光纤通常是偶数,一进一出 B)光缆不安全C) 光缆传输慢 D)光缆较电缆传输距离近3、下面有效的IP地址是: [7.2节 B IP地址概念]A)202.280...._频分多路复用器将每路信号调制在
一、缓存二、Session三、Cookie四、多语言五、分页六、上传七、验证码八、图像处理九、文件处理十、单元测试_tp5.0.4设置cookiehttoonly
1. 进入当前的项目根目录执行git inittouch .gitignore2. 过滤class文件或指定目录*.class/target/3. 提交git add .将所有文件提交到git,会过滤class和target文件夹3. 提交git commit -m "commits"...
拿破仑的海阔天空:https://blog.csdn.net/hktkfly6博主主要是原创和分享了关于ARM和LINUX的相关文章和技术经验,很有参考价值。比如关于Makefile经典教程(掌握这些足够)的分享:https://blog.csdn.net/hktkfly6/article/details/76409275..._专栏:成为牛人
日期计算时间限制:3000 ms | 内存限制:65535 KB难度:1描述如题,输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天。输入第一行输入一个数N(0输出每组输入数据的输出占一行,输出判断出的天数n样例输入32000 4 52001 5 42010 10 24样例输出96124297