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] 程序实现如下: 运行结果:
随机推荐
- JAVA入门——Generic/泛型
在台科大的第二次JAVA作业,老师课上讲的内容是泛型. 泛型(generic),泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以 ...
- PTA 第二周作业 张乐
题目1:整数的四则运算 1.实验代码 #include <stdio.h> int main() { int A,B; scanf("%d %d",&A,&am ...
- Beta Scrum Day 5
听说
- android 广播,manifest.xml注册,代码编写
1.种 private void downloadBr(File file) { // 广播出去,由广播接收器来处理下载完成的文件 Intent sendIntent = new Intent ...
- 2017 国庆湖南 Day5
期望得分:76+80+30=186 实际得分:72+10+0=82 先看第一问: 本题不是求方案数,所以我们不关心 选的数是什么以及的选的顺序 只关心选了某个数后,对当前gcd的影响 预处理 cnt[ ...
- python 基础 set 集合类型补充
为啥今天又重提这个数据类型呢?平时用的少,等要用起来的时候才发现,自己对这块啥都不知道了,so,今天就把这块再梳理一下咯. 一.set集合,是一个无序且不重复的元素集合.这一点是非常重要的. 二.集合 ...
- Mybatis和Hibernate本质区别和应用场景
Hibernate:是一个标准ORM(对象关系映射)框架.入门门槛较高,不需要程序员写sql语句,sql语句自动生成,对sql语句优化.修改比较困难 应用场景:适用于需求变化不多的中小型项目,比如后台 ...
- 隐藏Easy UI 中parent.$.modalDialog 的button
例子: buttons : [ { text : '关闭', handler : function() { parent.$.modalDialog.handler.dialog('close'); ...
- 新概念英语(1-105)Full Of Mistakes
Lesson 105 Full of mistakes 错误百出 Listen to the tape then answer this question. What was Sandra's pre ...
- SQL Server 利用触发器对多表视图进行更新
其步骤就是:利用update操作触发器产生的2个虚拟表[inserted]用来存储修改的数据信息和[deleted]表,然后将对应的数据更新到对应数据表中的字段信息中: 1.首先创建3个表: a.信息 ...