Python 爬虫之路(1)

小弟我呢,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

    最后就是循环打印输出

 

    其他的自己看着办吧,听说还会有什么爬取分页的内容,登录爬取什么的,我搞清楚在给大家说

猜你喜欢

转载自helanhe.iteye.com/blog/2400621