安装scrapy

环境 winpython3.6

pip install scrapy

发现在安装依赖twisted时出错,需要vc++14.0. 网上搜索发现需要下载安装visual studio等,太麻烦了。于是乎google到了Twisted-18.7.0-cp36-cp36m-win_amd64.whl。

pip install Twisted-18.7.0-cp36-cp36m-win_amd64

完成后继续

pip install scrapy

安装成功后,验证:

In[1]:import scrapy
In[2]:scrapy.version_info
Out[2]: (1, 5, 1)
……

阅读全文

将scrapy爬到的内容存入sqlite数据库

这个方法需要手动创建数据库文件并将表建立好,否则程序运行会出错。

settings.py

1
2
3
4
5
6
# sqlite 配置
SQLITE_DB_NAME = 'Data.db'                      #数据库名称
SQLITE_TABLE_NAME = 'table'                     #表名称
ITEM_PIPELINES={
    'dirName.pipelines.Sqlite3Pipeline': 400,
}

pipelines.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import sqlite3
    class Sqlite3Pipeline(object):
        def __init__(self, sqlite_file, sqlite_table):
            self.sqlite_file = sqlite_file
            self.sqlite_table = sqlite_table
        @classmethod
        def from_crawler(cls, crawler):
            return cls(
                sqlite_file = crawler.settings.get('SQLITE_DB_NAME'), # 从 settings.py 提取
                sqlite_table = crawler.settings.get('SQLITE_TABLE_NAME', 'items')
            )
        def open_spider(self, spider):
            self.conn = sqlite3.connect(self.sqlite_file)
            self.cur = self.conn.cursor()
        def close_spider(self, spider):
            self.conn.close()
        def process_item(self, item, spider):
            values = (
            item['A'],
            item['B'],
            item['C'],
            item['D'],
            item['E']
            )
            sql = 'INSERT INTO proxy VALUES (?,?,?,?,?)'    #注意插入的数据个数
            self.cur.execute(sql, values)
            self.conn.commit()
            return item        
……

阅读全文

机械硬盘调研简略汇报

硬盘的种类

目前商用电脑硬盘主要分为三类:

  1. 传统机械硬盘(hard disk drive ,HDD)
  2. 混合硬盘(hybrid harddrive,HHD)
  3. 固态硬盘(solid state drive, SSD)

机械硬盘的种类:

  1. 台式机硬盘
  2. 笔记本电脑硬盘
  3. 企业级硬盘
  4. 消费电子产品内置硬盘

机械主要生产商:

  1. 希捷(Seagate)
  2. 西部数据(WD)
  3. 东芝(Toshiba)

机械硬盘的前景 :

世界范围内机械硬盘行业收入每年下降4%,从2012年380亿美元的峰值逐步下降到2016年的270亿美元。机械硬盘的产量每年增长约16%,从2011年的335艾字节 [1] 增长到2016年的693艾字节。希捷和西部数据各占约4045%,东芝约占1317%。

随着SSD的兴起,传统机械硬盘的市场份额越来越小。但是机械硬盘在安防,数据存储领域还是有比较大的优势。

机械硬盘的主要零件:

  1. 碟盘
  2. disc seperator
  3. disc clamp
  4. 电机
  5. head stack assembly 头堆总成
  6. 永磁体
  7. PCB板
  8. 过滤器
  9. 硬盘上壳
  10. 硬盘壳
  11. 螺钉紧固件

硬盘爆炸图

硬盘爆炸图

机械硬盘

机械硬盘

零件生产工艺分析:

在参观Unisteel和Amtek的过程中,在生产现场看到过disc seperator和disc clamp等零件。这两种零件是使用冲床生产的冲压件。其他零件,如硬盘上壳、永磁体支架等均为冲压件。

我司可以开展业务的领域有:

  1. 机床上下料自动化改造
  2. 零件电镀或清洗时需要的零部件上挂和下料
  3. 零部件的自动尺寸或外观检测。
……

阅读全文

树莓派安装记录

1. 下载镜像:

下载 http://downloads.raspberrypi.org/raspbian_latest.torrent 最新版的 BT 种子

2. 使用win32 diskimager回复镜像到TF卡:

官方下载地址:http://sourceforge.net/projects/win32diskimager/

3. 远程桌面:

在windows下访问树莓派需要xdrp服务: sudo apt-get install xrdp

4.首次运行系统需要扩展分区:

sudo raspi-config 选中第一个 1 Expand Filesystem 并按Enter确认,之后退出重启,这样才能用到存储卡的全部容量

5.更换国内源:

sudo nano /etc/apt/sources.list 测试最佳软件源:

  • 安装 netselect

sudo apt-get install netselect

  • git clone

git clone https://github.com/sjqlwy/ccrm.git cd ./ccrm

  • 运行

sudo sh ccrm.sh sudo apt-get update 测出连接速度最快的源之后,修改sources.list,(假设结果为阿里源) sudo nano /etc/apt/sources.list 加入: deb http://mirrors.aliyun.com/raspbian/raspbian/jessie main non-free contrib deb-src http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib

sudo apt-get update (如果仍然遇到连接问题,则进行以下操作) sudo nano /etc/apt/sources.list.d/raspi.list 在原来的内容前添加 # 号,注释掉原来的源 有时apt-get的key可能出问题,具体来说就算官方源也会报说来源未知 这时可以尝试运行: sudo apt-key update

……

阅读全文

SymPy Tutorial

<li>
  <a href="http://reverland.org/python/2012/08/30/sympy-tutorial/#section-2">代数</a>
</li>
<li>
  <a href="http://reverland.org/python/2012/08/30/sympy-tutorial/#section-3">演算</a> <ul>
    <li>
      <a href="http://reverland.org/python/2012/08/30/sympy-tutorial/#section-4">极限</a>
    </li>
    <li>
      <a href="http://reverland.org/python/2012/08/30/sympy-tutorial/#section-5">微分</a>
    </li>
    <li>
      <a href="http://reverland.org/python/2012/08/30/sympy-tutorial/#section-6">级数展开</a>
    </li>
    <li>
      <a href="http://reverland.org/python/2012/08/30/sympy-tutorial/#section-7">求和</a>
    </li>
    <li>
      <a href="http://reverland.org/python/2012/08/30/sympy-tutorial/#section-8">积分</a>
    </li>
    <li>
      <a href="http://reverland.org/python/2012/08/30/sympy-tutorial/#section-9">复数</a>
    </li>
    <li>
      <a href="http://reverland.org/python/2012/08/30/sympy-tutorial/#section-10">函数</a>
    </li>
    <li>
      <a href="http://reverland.org/python/2012/08/30/sympy-tutorial/#section-11">微分方程</a>
    </li>
    <li>
      <a href="http://reverland.org/python/2012/08/30/sympy-tutorial/#section-12">代数方程</a>
    </li>
  </ul>
</li>

<li>
  <a href="http://reverland.org/python/2012/08/30/sympy-tutorial/#section-13">线性代数</a> <ul>
    <li>
      <a href="http://reverland.org/python/2012/08/30/sympy-tutorial/#section-14">矩阵</a>
    </li>
  </ul>
</li>

<li>
  <a href="http://reverland.org/python/2012/08/30/sympy-tutorial/#section-15">模式匹配</a>
</li>
<li>
  <a href="http://reverland.org/python/2012/08/30/sympy-tutorial/#section-16">打印</a> <ul>
    <li>
      <a href="http://reverland.org/python/2012/08/30/sympy-tutorial/#section-17">注意</a>
    </li>
  </ul>
</li>

<li>
  <a href="http://reverland.org/python/2012/08/30/sympy-tutorial/#section-18">更多文档</a>
</li>
<li>
  <a href="http://reverland.org/python/2012/08/30/sympy-tutorial/#section-19">翻译</a>
</li>
<li>
  <a href="http://reverland.org/python/2012/08/30/sympy-tutorial/#footnotes">FootNotes</a>
</li>
……

阅读全文

欧拉第八题

求以下这个一千位数中连续5个数字的最大乘积。

7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
def maxProduct(number):
    num=list(str(number))
	maxProduct=1
	for i in range(len(num)):
		tmp=num[i:i+5]
		if "0" in tmp:
            continue
		else:
            product=1
            for ele in tmp:
                product=product*int(ele) 
             	if product>maxProduct: 
                 	maxProduct=product 
                
	return maxProduct


if __name__=="__main__":
	start=clock()
    num=7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450
        print("the Max Product is {0}tRun Time:{1:.9}".format(maxProduct(num),clock()-start))

the Max Product is 40824 Run Time:0.00251535563

……

阅读全文

Euler第五题

Euler第五题:

求1到20各数的最小公倍数。

目前我用的方法是按照短除法求最小公倍数的方法做的。Euler给出的方法虽然原理基本搞懂,但是编程还没有实现。

——————————————————————————————————-

def primeNumber(k):

primes=[2,3,5,7,11,13,17,19]

number=21

while number<k:

flag=True

for prime in primes:

if number%prime==0:

flag=False

break

if flag:

primes.append(number)

number=number+2

return primes

def smallestMulti(z):

dividends=[]

for i in range(z):

dividends.append(i+1)

print(“{0}n{1}”.format(dividends,”–“*2*len(dividends)))

dividers=primeNumber(z)

print(“{0}n{1}”.format(dividers,”–“*2*len(dividers)))

divisors=[]

for divider in dividers:

flag=True

while flag:

for i in range(len(dividends)):

if dividends[i]%divider==0:

flag=True

divisors.append(divider)

break

else:

flag=False

for i in range(len(dividends)):

if dividends[i]%divider==0:

dividends[i]=dividends[i]//divider

# print(dividends)

print(“{0}n{1}”.format(divisors,”–“*2*len(divisors)))

answer=1

for divisor in divisors:

……

阅读全文

Euler第四题

寻找一个最大的为两个3位数乘积的回文。

回文就是正着念,反着念相同的数或单词,如 9009 = 91×99。


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from time import clock
start=clock()
z=999
a=[0,0,0]
flag=False
for i in range(100000):
	a[0]=int(z/100)
	a[1]=int((z-100*a[0])/10)
	a[2]=int(z-100\*a[0]-10\*a[1])
	palindrome=100000\*a[0]+10000\*a[1]+1000\*a[2]+100\*a[2]+10*a[1]+a[0]

#print(palindrome)
product=999
for j in range(999):
	if palindrome/product<1000 and palindrome%product==0:
		print("the answer is {0}={1}".format(palindrome,product,int(palindrome/product)))
		flag=True
		break
	product=product-1
	z=z-1
	if flag==True or palindrome<0: 
		break
print("{0:5f}s".format(clock()-start))

这段代码执行结果大约需要0.057S。看了一下给出的答案,代码还可以优化一下。

……

阅读全文

Project Euler 第三题的一个nb算法

题目:求600851475143 的最大质因数。

搞了2,3个小时,搞出来的算法效率都很低。网上发现一个nb算法。改成python后如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
def maxPrime():
	n=600851475143
	d=2
	while d<n/d:
		if n%d==0:
			n=int(n/d)
		else:
			d=d+1
	return n

if __name__=="__main__":
	from time import clock
	start=clock()
	finish=clock()
	print("the largest prime factor is {0}\t\t{1}s".format(maxPrime(),(finish-start)/1000000))

结果: the largest prime factor is 6857 4.462223927783368e-13s

……

阅读全文