Python获取会议部分的信息内容(不断完善中)
这是一个用于获取物理师会议报告的简单爬虫,数据库表结构正在不断完善中
爬虫信息:
# -*- coding:utf-8 -*-
import urllib.request
import pymysql
from bs4 import BeautifulSoup
import requests
import time
import re
import os # 数据库连接基础类
class Conn_Mssql:
#查询Mysql数据库
def Select_mssql(strsql):
#数据库连接信息
conn = pymysql.connect("DESKTOP-V9MQNL6", "root", "password", "internetdaq", charset="utf8")
cur = conn.cursor()
cur.execute(strsql)
return cur
#插入与更新数据库
def InsertOrUpdate_mssql(strsql):
# 数据库连接信息
conn = pymysql.connect("DESKTOP-V9MQNL6", "root", "password", "internetdaq", charset="utf8")
cur = conn.cursor()
cur.execute(strsql)
conn.commit()
conn.close()
return cur #获取网络信息中的信息,并存储
class Get_HttpMessage:
# 下载文件
def getFile(url):
try:
file_name = url.split('/')[-1]
file_path = "StorePDF\\"+file_name
u = urllib.request.urlopen(url)
except :
print(url, "url file not found")
return
block_sz = 90192
with open(file_path, 'wb') as f:
while True:
buffer = u.read(block_sz)
if buffer:
f.write(buffer)
else:
break
print("Sucessful to download" + " " + file_name)
#开始获取网络信息
def startGet():
print('start')
#链接的APPM网络
url = "https://www.aapm.org/pubs/reports/"
request = urllib.request.Request(url)
response = urllib.request.urlopen(request)
data = response.read()
soup = BeautifulSoup(data,"lxml")
#href属性包含docid字符串
for link in soup.find_all(href=re.compile("docid")):
#地址值
text_url = link['href']
#地址名称
text_Name = link.get_text()
if len(text_url)>0 and len(text_Name)>10 :
strSQl = "insert into daqtest (SAVE_TIME,URL_Name,URL_Link) values (NOW(),'" + text_Name + "','" +url+ text_url + "')"
strSQl =strSQl.encode('utf8')
try:
#存储地址信息
Conn_Mssql.InsertOrUpdate_mssql(strSQl)
except:
print('母页面MySQL存储失败')
time.sleep(1)
#含有论文的网页地址
urlSecond = url + text_url
request2 = urllib.request.Request(urlSecond)
response2 = urllib.request.urlopen(request2)
data2 = response2.read()
soup2 = BeautifulSoup(data2, "lxml")
#此变量用于消除重复的PDF信息
pdfName = ""
#查询网页中的PDF信息
for link2 in soup2.find_all(href=re.compile("pdf")):
#PDF信息
text_url2 = link2['href']
#PDF的所在网页来源
text_Name2 = url + text_url
if len(text_url2) > 0 and pdfName != text_url2:
pdfName = text_url2
strSQl2 = "insert into daqtest (SAVE_TIME,URL_Name,URL_Link) values (NOW(),'" + text_Name2 + "','" + text_url2 + "')"
strSQl2 = strSQl2.encode('utf8')
try:
#存储PDF信息至数据库
Conn_Mssql.InsertOrUpdate_mssql(strSQl2)
#慢一点,减缓网站压力
time.sleep(1)
#下载论文中的PDF文件
Get_HttpMessage.getFile(text_url2)
except:
print('子页面MySQL存储失败')
#程序入口
Get_HttpMessage.startGet()
这是用于存储的数据库表结构
/*
Navicat MySQL Data Transfer Source Server : dde
Source Server Version : 50624
Source Host : DESKTOP-V9MQNL6:3306
Source Database : internetdaq Target Server Type : MYSQL
Target Server Version : 50624
File Encoding : 65001 */ SET FOREIGN_KEY_CHECKS=0; -- ----------------------------
-- Table structure for daqtest
-- ----------------------------
DROP TABLE IF EXISTS `daqtest`;
CREATE TABLE `daqtest` (
`ID` bigint(20) NOT NULL AUTO_INCREMENT,
`SAVE_TIME` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
`URL_Name` varchar(600) COLLATE utf8_unicode_ci DEFAULT NULL,
`URL_Link` varchar(6000) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=4634 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Python获取会议部分的信息内容(不断完善中)的更多相关文章
- Python 获取Facebook用户的Friends的爱好中的Top10
CODE; #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-8-12 @author: guaguastd @name: f ...
- Python 获取Facebook用户Friends的爱好类别中的Top10
CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-8-12 @author: guaguastd @name: f ...
- python获取系统内存占用信息的实例方法
psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息.它主要应用于系统监控, ...
- 使用shell/python获取hostname/fqdn释疑
一直以来被Linux的hostname和fqdn(Fully Qualified Domain Name)困惑了好久,今天专门抽时间把它们的使用细节弄清了. 一.设置hostname/fqdn 在Li ...
- 使用 python 获取 httpd 程序所占用物理内存
#!/usr/bin/env python #encoding: utf-8 ''' 思路: /proc/xx_pid/status 文件中的关键字段 VmRSS 来获取某个进程占用的物理内存 步骤: ...
- python 获取日期
转载 原文:python 获取日期 作者:m4774411wang python 获取日期我们需要用到time模块,比如time.strftime方法 time.strftime('%Y-%m-% ...
- python获取字母在字母表对应位置的几种方法及性能对比较
python获取字母在字母表对应位置的几种方法及性能对比较 某些情况下要求我们查出字母在字母表中的顺序,A = 1,B = 2 , C = 3, 以此类推,比如这道题目 https://project ...
- python获取文件大小
python获取文件大小 # !/usr/bin/python3.4 # -*- coding: utf-8 -*- import os # 字节bytes转化kb\m\g def formatSiz ...
- python 获取一个列表有多少连续列表
python 获取一个列表有多少连续列表 例如 有列表 [1,2,3] 那么连续列表就是 [1,2],[2,3],[1,2,3] 程序实现如下: 运行结果:
随机推荐
- git常用命令速查
创建 $ git init #在当前目录下创建一个空的本地仓库 $ rm -rf .git #删除本地仓库 $ git add . #把当前目录下的所有文件添加到暂存区 $ git commi ...
- Git 建立仓库及常用命令速查表
Git新建仓库两种模式: 一.项目在本地时,本地初始化仓库并提交至Coding.Net 新建一个空白目录并进入,执行如下流程 1.git init2.项目代码复制到当前目录3.git add *4.g ...
- 网络1712--c语言一二维数组作业总结
1.成绩摆前头 1.1基本要求(1分) 按时交 - 有分 未交 - 0分 迟交一周以上 - 倒扣本次作业分数 抄袭 - 0分 泛泛而谈(最多七分) 1.2评分要点 PTA作业总结(4分) 同学代码互评 ...
- 冲刺NO.11
Alpha冲刺第十一天 站立式会议 项目进展 项目进入尾声,主要测设工作完成过半,项目总结也开始进行. 问题困难 项目的困难现阶段主要是测试过程中存在一些"盲点"很难发现或者发现后 ...
- idea 导eclipse项目
https://www.cnblogs.com/xiaoBlog2016/archive/2017/05/08/6825014.html
- Cypher语法
cypher是neo4j官网提供的声明式查询语言,非常强大,用它可以完成任意的图谱里面的查询过滤,我们知识图谱的一期项目 基本开发完毕,后面会陆续总结学习一下neo4j相关的知识.今天接着上篇文章来看 ...
- Windows 的Apache支持SSI配置
配置SSI什么是shtml? 使用SSI(Server Side Include)的html文件扩展名,SSI(Server Side Include),通常称为"服务器端嵌入"或 ...
- 点开GitHub之后,瑟瑟发抖...的我
我说句实在话啊,GitHub这个网址真的很能勾起人学习的欲望,一进入GitHub的注册页面真的让我这个英语学渣瑟瑟发抖,瞬间立下个flag:好好学习英语..... 我对python的求知欲怎么能被英语 ...
- Python内置函数(58)——input
英文文档: input([prompt]) If the prompt argument is present, it is written to standard output without a ...
- Python内置函数(50)——issubclass
英文文档: issubclass(class, classinfo) Return true if class is a subclass (direct, indirect or virtual) ...