python(day01)

python2.7 Anaconda2-5.0.1 pydev 4.5.5,pip19安装失败
python3.7 Anaconda2-5.0.1 pydev 4.5.5,pip19安装失败

//资源下载
Anaconda2-5.0.1-Windows-x86_64
下载地址---https://repo.anaconda.com/archive/
python-2.7.13.amd64.msi
python-2.7.13.msi
下载地址---https://www.python.org/downloads/release/python-2713/
pydev 4.5.5
下载地址---https://sourceforge.net/projects/pydev/files/pydev/PyDev%204.5.5/PyDev%204.5.5.zip/download
pip
下载--https://pypi.org/project/pip/19.0.3/#files

phantomjs
下载---http://wenku.kuryun.com/docs/phantomjs/download.html
https://phantomjs.org/download.html

Python介绍

概述
Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载等,有益于增强源代码的复用性。
Python本身被设计为可扩充的,提供了丰富的API和工具,以便程序员能够轻松地使用C语言、C++、Cython来编写扩充模块。Python编译器本身也可以被集成到其它需要脚本语言的程序内。因此,很多人还把Python作为一种"胶水语言"(gluelanguage)使用。使用Python将其他语言编写的程序进行集成和封装。

Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),然后再由Python Virtual Machi虚拟机)来执行这些编译好的byte code。这种机制的基本思想跟Java,.NET是一致的。
除此之外,Python还可以以交互模式运行,比如主流操作系统Unix/Linux、Mac、Windows都可以直接在命令模式下有Python交互环境。直接下达操作指令即可实现交互操作。

安装Anaconda
需要添加环境变量

D:\software\python\Anaconda2\Scripts

python安装

64位
python-2.7.13.amd64

需要添加环境变量

D:\software\python\python2.7
D:\software\python\python2.7\Scripts

cmd验证安装成功

C:\Users\16902>python
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)] on win32

使用IDE工具开发Python
1.将PyDev压缩包中的plugins和features目录下的jar包,拷贝到eclipse的plugins目录和features目录下

配置
在这里插入图片描述
新建项目
在这里插入图片描述

代码

#coding=utf-8

'''
知识点
1.三引号是多行注释
2.每行语句后不需要加;
3.如果在一行中写多条语句,需要用; 隔开
4.print 打印换行
5.print数据,打印不换行
6.python不需要声明变量类型,是根据结果来自动推断类型
7.查看类型的函数tvpe(变量)
8.python中标识符是区分大小写。比如a=100 A=100是两个不同的变量
abc=100Abc=100ABc=100
9.python中没有常量。都是变量
10.如果在开发中,发现标识符是大写,表示是一个常量,不希望被修改
11.python不是用{}来标识方法体作用域,而是通过缩进(Tab指标符控制)
12.如果标识符以双下滑线开头,比如__name 表示类的私有成员(private)
13.python中单引号等价于双引号,表示字符串





'''
print "hello python" ,;print "你好"
a=100  
A=100
b="hello"
print type(a)

if a>100:
    print "big"
else:
    print "small"
    
    
s="helloword"
print s[0]  #h
print s[0:3] #hel


print s[1:]  #elloword

print "he" in s  #True



str="my name id %s,my age %d" %("yy",2)
print str

print True and False
print True or False
print not True

    
#coding=utf-8
'''
知识点
1.python做类型转换,格式固定:目标格式(变量) 比如int(s)
2.python 导包通过import关键字 可以用as 为包起别名



'''
import math as m
from cmath import log10
import random
s="100"
i1=int(s)
f1=float(s)
print type(i1)

i2=-10
#返回绝对值
print abs(i2)
print m.exp(1)
print log10(100)
#计算x的n次方
print 2**10   #1024
#生成指定范围内的随机数字
print random.randint(1,5)
#类比于java的null 空值
x=None





#coding=utf-8


'''
知识点
1.列表用[]声明
2.元组用()声明
3.列表和元组的操作都是通过下标操作[index],下标从0开始
4.Set用门,类比于java的Set
5.字典类型用{ key :value, key : value. . .}, 类比于Java的map


'''
#声明列表
l1=[1,2,3,"hello",2.1]
#列表取值
print l1
print l1[0]
print l1[0:4]
print l1[0:]
print len(l1)
print 2 in l1


l2=[3,1,2,5,4]
print max(l2)
print min(l2)

#reverse=false 是升序 , true是降序
l2.sort(cmp=None, key=None, reverse=False)
l2.sort(cmp=None, key=None, reverse=True)
print l2

l2.reverse()
print l2


l3=[("d",1),("b",3),("a",2),("c",4)]
#key传入lambda ,可以类比s.cala的匿名函数
l3.sort(cmp=None, key=lambda x:x[0], reverse=False)
print l3


s1={1,1,2,2,"hello"}
print s1

#申明字典类型
d1={"tom":18,"rose":25}
print d1["tom"]
print d1.get("tom")





#coding=utf-8

'''
知识点
1.通过def定义函数def函数名(参数列表):方法体
2.返回值必须加return关键字
3.参数不需要指定类型
4。如果要定义个空函数,方法体中需要用pass位
5.python支持Lamda表达式,可以类比于scaLa的匿名函数
所以可以将其进行赋值或传递
6.python函数支持默认参数机制,def函数名(形参=默认值)
7-python支持变长参数,def函数名(*形参)变长参数本质上可看做是列表

'''
l1=[1,2,3,4]
for i in  l1:
    print i 

n=0
sum=0
while(n<=10):
    sum+=n
    n+=1
print sum



def f1(a,b):
    return a+b

print f1(2,3)
print f1("hell","o")


def f2(a,b):
    pass
print "hello"

f3=lambda a,b:a+b
print f3(2,3)

def f4(a,b=10):
    return a+b

print f4(2)


#变长参数
def f5(*num):
    #return max(num)
    for i in num:
        print i

#print f5(1,2,3,4)
f5(1,2,3,4)



以下安装配置失败

解压phantomjs

添加环境变量

D:\software\python\python2.7\phantomjs-2.1.1-windows\bin
D:\software\python\python2.7\pip-19.0.3>python setup.py install
D:\software\python\python2.7\pip-19.0.3>pip install pyspider

在这里插入图片描述

pip版本问题 默认Anaconda里边的pip版本,更新pip
在以下目录下运行pip install pyspider

d:\software\python\python2.7\lib\site-packages\

报错:Command “python setup.py egg_info” failed with error code 10 in c:\users\16902\appdata\local\temp\pip-install-a5b4_n\pycurl
解决 下载pycurl,放到d盘,安装

pip install D:\Downloads\pycurl-7.43.0.4-cp38-cp38-win_amd64.whl
pip install pycurl

报错:

  Failed building wheel for wsgidav
  Running setup.py clean for wsgidav
Failed to build wsgidav
Could not build wheels for wsgidav which use PEP 517 and cannot be installed directly
更新pip 和 setuptools

python -m pip install --upgrade pip
pip install --upgrade pip setuptools wheel
pip install wsgidav==2.4.1
pip install wheel
pip uninstall wsgidav
pip install wsgidav==2.4.1
pip install pyspider

pyspider all
报错

d:\software\python\python2.7\lib\site-packages\pyspider\libs\utils.py:196: FutureWarning: timeout is not supported on your platform.
  warnings.warn("timeout is not supported on your platform.", FutureWarning)
phantomjs fetcher running on port 25555
[I 221004 20:43:18 result_worker:49] result_worker starting...
Exception in thread Thread-3:
Traceback (most recent call last):
  File "d:\software\python\python2.7\lib\threading.py", line 801, in __bootstrap_inner
    self.run()
#from urllib.parse import urlencode

python3.7

Collecting pycurl
  Using cached pycurl-7.45.1.tar.gz (233 kB)
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py egg_info did not run successfully.
  │ exit code: 10
  ╰─> [1 lines of output]
      Please specify --curl-dir=/path/to/built/libcurl
      [end of output]
D:\software\python\pip-19.0.3>pip uninstall setuptools
D:\software\python\pip-19.0.3>pip install setuptools==57.5.0

 ModuleNotFoundError: No module named 'distutils.command.bdist_msi'
sudo apt-get install python3-distutils

==================================

python爬虫软件安装配置失败,采用Java爬虫

================================

jsoup select

1.通过标签名来查找:测试代码︰

<span>33</span><span>25</span>
select写法:
Elements elements = document.select("spah");



⒉通过id来查找:

<span id="mySpan">36</span><span>20</span>
Elements elements = document.select("t#mySpan");
//通过id来查找,使用方法跟css指定元素一样,用#

3.通过class名来查找:

<span class="myClass">36</span><span>20</span>
Elements elements = document.select(".myClass");//使用方法跟css指定元素一样,用.

4.利用标签内属性名查找元素∶

<span class="class1" id="id1">36</span><span class="class2" id="id2">40</span>
Elements elements = document.select("span[class=class1]span[id=id1");//规则为标签名【属性名=属性值】,多个属性即多个【,如上
package com.cn;


import org.apache.log4j.Logger;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.junit.Test;

public class TestDemo {
	
	private Logger logger=Logger.getLogger(TestDemo.class);
	@Test
	public void connect() throws Exception{
		String url="https://item.jd.com/10057361479634.html";
		//根据url获取网页链接对象
		Connection conn=Jsoup.connect(url);
		//获取目标url的整个网页内容
		Document doc=conn.get();
		System.out.println(doc);
	}
	@Test
	public void pare_title() throws Exception{
		String url="https://item.jd.com/10057361479634.html";
		//根据url获取网页链接对象
		Connection conn=Jsoup.connect(url);
		//获取目标url的整个网页内容
		Document doc=conn.get();
//		Element el=doc.select(".sku-name").get(0);
		Element el=doc.select( "div[class=sku-name]" ).get(0);

		System.out.println(el.text());
//		//根据选择器返回结果集
//		Elements els = doc.select(".sku-name");
//		//遍历结果集
//		for (Element el : els) {
//			//获取每个结果中的文本内容
//			String result=el.text();
//			System.out.println(result);
//		}
	}
	
	
	
	@Test
	public void fetch_item_list() throws Exception{
		String url="https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA&enc=utf-8&wq=%E6%89%8B%E6%9C%BA&pvid=8858151673f941e9b1a4d2c7214b2b52";
		//根据url获取网页链接对象
		Connection conn=Jsoup.connect(url);
		//获取目标url的整个网页内容
		Document doc=conn.get();
		Elements select = doc.select( ".p-name" );
		for (Element el : select) {
			System.out.println(el.text());
		}
		
	}
	@Test
	public void fetch_item_all() throws Exception{
		String url="https://list.jd.com/list.html?tid=1008669";
		//根据url获取网页链接对象
		Connection conn=Jsoup.connect(url);
		//获取目标url的整个网页内容
		Document doc=conn.get();
		Element el=doc.select(".p-skip em b").get(0);
		int pageNum=Integer.parseInt(el.text());
		for(int i=1;i<pageNum;i++){
			String pageurl="https://list.jd.com/list.html?tid=1008669"+i;
			Connection pageconn=Jsoup.connect(pageurl);
			Document pagedoc=pageconn.get();
			Elements els=pagedoc.select( ".p-name" );
			for(Element pageel:els){
				logger.info(pageel.text());
//				System.out.println(pageel.text());
				}


		}
		
	}
	
	
	@Test
	public void fetch_price() throws Exception{
//		String url="https://item.jd.com/10033449197336.html";
		String url="https://fts.jd.com/prices/mgets?callback=jQuery5281885&skuIds=J_10058349591736";
		//根据url获取网页链接对象
		Connection conn=Jsoup.connect(url);
		/ /因为此时返回不是html页面,所以不能用document来接。
String json=conn.ignoreContentTy2e(true).execute(.body() ;

		//价格为jquery链接,需要自己页面找ip,返回json----json解析
		//Document doc=conn.get();
		
		//获取目标url的整个网页内容
		//价格为jquery----json解析
//		Document doc=conn.get();
//		Element el = doc.select(".price").select(".J-p-10033449197336").get(0);
//		System.out.println(el.text());
		
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值