小弟我呢,Java出生公司PHP搞个网站看了几天thinkphp于是走上PHP这条不归路。总的来都差不多,语法习惯还是和Java一样建一堆对象搞方法搞继承搞MVC
今天再次走向另一条不归路Python,我走的是野路子没有正规的看文档教程基础语法之类的,我喜欢走到那看到那,对于正规军自己看着办吧!
我会对每行代码进行解释,具体说明意思请自己看官方文档
开车
import urllib2
from bs4 import BeautifulSoup
class indexAction:
url = 'http://www.baidu.com'
def getHtml(self,url):
request = urllib2.Request(url)
request.add_header('user-agent', 'Mozilla/5.0')
response = urllib2.urlopen(request)
return response
if __name__ == '__main__':
index = indexAction();
html = index.getHtml(index.url);
html_str = html.read();
soup = BeautifulSoup(html_str,'html.parser',from_encoding='urt-8');
links=soup.find_all('a');
for link in links:
print link.name,link['href'],link.get_text();
pass
import urllib2
import 关键字 引入一个对象
urllib2是一个Python的扩展库,负责URL方面网络协议和支持.资料自己看
资料地址:http://python.usyiyi.cn/translate/python_278/library/urllib2.html
from bs4 import BeautifulSoup
bs4 是python的第三工具负责解析文本内容是需要安装的 安装请看
资料地址:http://helanhe.iteye.com/admin/blogs/2394806
BeautifulSoup是bs4的一个类具体靠他来查找我们需要的内容
class indexAction:
class Python是关键字
indexAction是我定义的一个类名
: 冒号是python的内容体 相当于Java里面大括号
url = 'http://www.baidu.com';
这是定义的一个变量,在python里面和PHP有点像是弱类型所以变量是不需要定义类型的,同时python里面也不需要;分号结束,当然习惯还是给上分号看起舒服些
def getHtml(self,url):
def 是关键字 相当于 java里面的 function 表示这是一个方法或者函数
getHtml(self,url) getHtml是方法名里面两个参数,
第一个参数self不知道干什么用,反正要有.资料请看http://python.jobbole.com/81921/,
第二个参数才是我们需要传入的参数url
request = urllib2.Request(url)
意思就是通过urllib2的这个插件请求一个URL地址,然后方法一个对象,这个时候并没有实际请求数据还在组装中
request.add_header('user-agent', 'Mozilla/5.0')
这个是通过上面返回的对象加载请求的HTTP头,这个我们想加载什么就加载什么,看自己心情
response = urllib2.urlopen(request)
这个才是通过urllib2这个插件像目标URL请求内容,返回一个目标网站的对象给我们,具体什么鬼我也不知道 可以自己打印出来看看
if __name__ == '__main__':
这个是一个main函数为什么是这个样子,就应该是这个样子
http://www.dengfeilong.com/post/60.html
html_str = html.read();
这个是从返回的对象通过read内置的方法读取目标网站的html(返回的是个字符串)
soup = BeautifulSoup(html_str,'html.parser',from_encoding='urt-8');
这其实是在实例化一个类,并不是调用某个方法。在python里面你不需要new 类名
里面需要三个参数
第一个 要解析的字符串
第二个 解析方式
第三个 解析后的编码
https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html
最后方法一个对象
links=soup.find_all('a');
通过上面的对象调用find_all()函数里面传入你要查找的HTML标签关键字,里面有很多方法可以进行查找具体看文档好了都有
for link in links:
print link.name,link['href'],link.get_text();
pass
最后就是循环打印输出
其他的自己看着办吧,听说还会有什么爬取分页的内容,登录爬取什么的,我搞清楚在给大家说