# 单引号注释 print()
'''
三引号注释法
print()
print()
'''
a="qwertyuiop"
b="qwertyuio"
sa = set(a)
print(sa)
sb = set(b)
print(sb)
sa|sb
sa&sb
a={"name":"zhangsan","age":"20","sex":"0"}
print(a["name"])
print(a["age"])
a=10
b=1
if(a>9):
print(a)
if(b==9):
print(b)
elif(a<10):
print("abc")
'''
a=5
while a<10:
print("hello")
'''
a=['a','b','c','d','e','f']
'''
for i in a:
print(i)
for i in range(0,9):
print("hello")
'''
for i in range(0,9):
if(i==7):
continue;
print(i)
for i in range(0,9):
if(i==5):
break;
print(i)
# 导入谁,谁就接
#方式一:
import urllib
from urllib.request import urlopen
data1 = urllib.request.urlopen("http://www.baidu.com").read()
#print(data1)
print(len(data1))
# 方式二:
data2=urlopen("http://jd.com").read()
#print(len(data2))
print(len(data2))
# 方式三:
from urllib import request
data3=request.urlopen("http://jd.com").read()
print(len(data3))
# 打开文件,写入
fh1 = open("C:/Users/tao/Desktop/python/file1.txt","w")
fh1.write("你好,开始写入数据")
fh1.close()
# 打开文件,读写
fh2 = open("C:/Users/tao/Desktop/python/file1.txt","r")
data2=fh2.read()
print(data2)
#按行读取
fh2 = open("C:/Users/tao/Desktop/python/file1.txt","r")
while True:
line=fh2.readline()
if len(line)==0:
break
print(line)
fh2.close()
# 异常处理
try:
print("zhengchang")
printss("hell")
except Exception as eer:
print(err)
print("hi me to")
# 作业
# 网络爬虫能做什么事情?
#1、搜索引擎
#2、采集金融数据
#3、采集商品数据
#4、自动过滤广告
#5、采集竞争对手的客户数据
#6、采集行业相关数据,进行数据分析
# 下载路径:https://www.lfd.uci.edu/~gohlke/pythonlibs/
# 命令安装: pip install 软件名称
#网络爬虫原理
# 通用 和聚焦网络爬虫
# 正则表达式
import re
pat="yue"
string = "http://www.baidu.com"
res = re.search(pat,string)
print(res)
pat="\n"
string3='''242353243qwerty
qqqqqq'''
res3 = re.search(pat,string3)
print(res3)
\w 匹配任意字母数字或则下划线
\d 匹配任意一个十进制数
\s 匹配任意一个空白字符
\W 匹配任意字符,除了字母数字或则下划线
\D 匹配任意字符,除了十进制数
\S 匹配任意字符,除了空白字符
^ 匹配字符串开始位置
$ 匹配字符串结束位置
* 匹配0次1次多次
?匹配0次1次
+ 匹配0次多次
. 匹配任意字符
| 匹配或
# 模式修正符
I 忽略大小写
M 多行匹配
L 本地化匹配 (忽略)
U unicode 修正符
S 点也能匹配
s{5,7} 表示s出现5次最多7次
path1 = "python"
path2 = "python"
string = "qwqwqwqwqwqwPythonweb"
rst =re.search(pat1,string)
print(rst)
rst =re.search(pat1,string,re.I) # 使用修正符
#元组表达式
import re
pat = "pyth[jsz]n"
string = "asasasasasaspythsndd"
rst = re.search(pat,string)
print(tst)
pat = ".python..."
string = "gowebpythonwhoareyou"
rst = re.search(pat,string)
print(rst)
#贪婪模式和懒惰模式
# 贪婪模式的核心就是尽可能多的匹配;
# 懒惰模式的核心就是尽可能少的匹配;
par1="p.*y"
pat2="p.*?y"
string ="abcdpythonthouhpy"
###############################################################
# 爬虫出版社名称
# 步骤:一先爬虫下来 二、写到记事本
import urllib.request
data=urllib.request.urlopen("https://read.douban.com/provider/all").read()
data=data.decode("utf-8")
import re
pat='(.*?)'
mydata=re.compile(pat).findall(data)
mydata
# 打开文件,写入
fh1 = open("C:/Users/tao/Desktop/python/file1.txt","w")
for i in range(0,len(mydata)):
fh1.write(mydata[i]+"\n")
fh1.close()
##############################################################
# Urllib库基础
import urllib.request.urlcleanup()
# 列如:urllib.request
# urlretrieve() 使用,即将网页爬到本地所对应的指定地址位置。
# urlcleanup() 使用,即清缓存。
# urlopen()
# info() 获取爬虫信息
# getcode() 获取爬虫状态
# geturl() 获取爬虫哪个链接
import urllib.request
urllib.request.urlretrieve("http://www.hao123.com",filename="C:/Users/tao/Desktop/python/20181121/1.html")
file = urllib.request.urlopen("http://www.hao123.com")
file.info()
file.getcode()
file.geturl()
# 设置超时时间
file = urllib.request.urlopen("http://www.hao123.com",timeout=10)
for i in range(0,100):
try:
file=urllib.request.urlopen("http://www.hao123.com",timeout=1)
data=file.read()
print(len(data))
except Exception as e:
print("出现异常:"+str(e))
# 自动模拟HTTP请求 post和get
import urllib.request
keywd="python"
keywd= urllib.request.quote(keywd)
url="http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&ch=&tn=98779107_hao_pg&bar=&wd="+keywd
req=urllib.request.Request(url)
data=urllib.request.urlopen(req).read()
fh=open("C:/Users/tao/Desktop/python/20181121/getPython.html","wb")
fh.write(data)
fh.close()
import urllib.request
import urllib.parse
url = ""
mydata= urllib.parse.urlencode({
"name":"tao.com",
"pass":"123456"
}).encode("utf-8")
req = urllib.request.Request(url,mydata)
data = urllib.request.urlopen(req).read();
fh=open("C:/Users/tao/Desktop/python/20181121/postPython.html","wb")
fh.write(data)
fh.close()
#异常处理
URLError产生的情况:
1、连不上服务器;
2、远程URL不存在触发了URL
3、本地没有网络
4、触发了HTTPError子类
import urllib.error
import.urllib.request
try:
urllib.request.urlopen("http://www.youtube.com")
except urllib.error.URLError as e:
if hasattr(e,"code"):
print(e.code)
if hasattr(e,"reason"):
print(e.reason)
# 浏览器伪装技术原理 及浏览器伪装技术实战
import urllib.request
url = "https://blog.csdn.net/ITdada"
headers= ("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36")
opener = urllib.request.build_opener()
opener.addheaders=[headers]
data= opener.open(url).read()
fh=open("C:/Users/tao/Desktop/python/20181121/weizhuangpacong.html","wb")
fh.write(data)
fh.close()
import urllib.request
import re
data=urllib.request.urlopen("http://news.sina.com.cn/").read()
data2=data.decode("utf-8","ignore") # 表示设置字符编码,后面表示忽略
pat = 'href="(http://news.sina.com.cn/.*?)"'
allurl = re.compile(pat).findall(data2)
for i in range(0,len(allurl)):
try:
print("第"+str(i)+"次爬取")
thisurl=allurl[i]
file="C:/Users/tao/Desktop/python/20181125/sina/"+str(i)+".html"
urllib.request.urlretrieve(thisurl,file)
print("---成功--")
except urllib.error.URLError as e:
if hasattr(e,"code"):
print(e.code)
if hasattr(e,"reason"):
print(e.reason)
# 作业练习
import urllib.request
import re
url="http://blog.csdn.net"
headers= ("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36")
opener = urllib.request.build_opener()
opener.addheaders = [headers]
urllib.request.install_opener(opener)
data =urllib.request.urlopen(url).read().decode("utf-8","ignore")
pat =' scrapy runspider p9.py
# cd C:\Users\tao\Desktop\python>scrapy runspider p9.py
# 创建项目
# scrapy startproject -h
# scrapy startproject
# 运行爬虫一个文件
# scrapy crawl
# 查看当前项目多个爬虫一个文件
# scrapy list
# scrapy version
# scrapy view http://news.sina.com 下载并打开网页
# scrapy bench 项目测试命令
# 进入项目后在输入 cd C:\Users\tao\Desktop\python\demo1\demo1>scrapy -h
# scrapy genspider -l 有哪些模板
# C:\Users\tao\Desktop\python\demo1\demo1> scrapy genspider -l
Available templates:
basic #表示 基本爬虫模板
crawl #表示 自动爬虫模板
csvfeed #表示 csv爬虫模板 主要处理csv文件
xmlfeed #表示 xml爬虫模板 主要处理xml文件
# 创建项目
# scrapy startproject 模板名、爬虫名 、域名
# C:\Users\tao\Desktop\python\demo1\demo1> scrapy genspider -t basic tao baidu.com
# 执行
# scrapy crawl weixin --nolog
#
正则表达式
XPath表达式
/ 表示一层一层的找
text() 表示提取标签下面的文本内容
@ 表示提取标签属性的内容
// 表示寻找当前页所有标签
标签[@属性=值]
//li[@class="hidden-xs"]/a/@href
# demo
python 运行文件的顺序
1、items.py 最先运行,首先创建容器,然后运行爬虫文件,查找网址如start_urls找到网址;
2、通过网址去请求request爬,爬了之后等到响应,响应服务器返回来得到信息网站的内容;
3、通过xpath表达式去提取,提取完,同时有两部分的信息,一部分是链接信息,一部分是提取出来的内容信息
# 习题及思考
# demo json数据处理
import json
data='{"id":1234566,"name":"金子塔"}'
jdata=json.loads(data)
jdata.keys()
jdata["id"]
# demo 分布式思路
# 安装 命令 pip install scrapy-redis
# 项目练习
一 、首先到跟目录
scrapy startproject ts
cd ts
scrapy genspider -t basic hellobi hellobi.com
#运行命令
scrapy crawl hellobi --nolog
#自动模拟登陆爬虫实战
# 安装数据库
pip install pymysql
/usr/local/MySQL/bin/mysql -u root -p
Root
123456
参考博客:https://blog.csdn.net/luohai859/article/details/50741496
设置mysql字符编码
/usr/local/MySQL/bin/mysql -u root -p
Password:123456
查看:进入 mysql> show variables like '%char%';
my.cnf文件
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
-------------------------------------
但是仍然没成功的时候,那么,重点来了,/etc/的路径应该是:cd /private/etc/
然后才是,新增一个 my.cnf 文件,然后写入命令保存退出,重启mysql
ps:如果无法保存,使用 sudo vim my.cnf
show variables like '%char%';
CREATE TABLE `books` (
`t_id` int(11) NOT NULL AUTO_INCREMENT,
`t_title` varchar(100) DEFAULT NULL,
`t_link` varchar(100) DEFAULT NULL,
`t_commentnums` varchar(100) DEFAULT NULL,
`t_datetime` datetime DEFAULT NULL,
PRIMARY KEY (`t_id`)
) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8;
CREATE TABLE `am_infomation` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL,
`asin` varchar(100) DEFAULT NULL,
`asingroup` varchar(100) DEFAULT NULL,
`tags` varchar(100) DEFAULT NULL,
`profile` varchar(100) DEFAULT NULL,
`datetime` datetime DEFAULT NULL,
`site` int(11) DEFAULT NULL,
`votes` int(11) DEFAULT NULL,
`ranking` varchar(100) DEFAULT NULL,
`email` varchar(100) DEFAULT NULL,
`facebook` varchar(100) DEFAULT NULL,
`twitter` varchar(100) DEFAULT NULL,
`youtube` varchar(100) DEFAULT NULL,
`pinterest` varchar(100) DEFAULT NULL,
`instagram` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
一 、首先到跟目录
scrapy startproject amazon
cd amazon
scrapy genspider -t basic am amazon.com # 基于basic 模板
scrapy genspider -t crawl am amazon.com # 基于crawl 模板
#运行命令
scrapy crawl am --nolog
第①
第②
第③
第④
第⑤
第⑩ 数据分析与挖掘技术
一、概念
数据分析:对已知的数据进行分析,然后提取出一些有价值的信息;数据分析的数据量有可能不会太大;
数据挖掘:对大量的数据进行分析与挖掘,得到一些未知的、有价值的信息等;如:从网站的用户或用户行为数据中挖掘出用户的潜在需求信息,从而对网站进行改善;
数据分析与数据挖掘密不可分,数据挖掘是数据分析的提升;
二、做什么
数据挖掘技术可以帮助我们更好的发现事物之间的规律。
三、数据挖掘过程
1、定义目标