python爬虫(一)

    xiaoxiao2021-03-25  94

       我们通过使用requests库来实现一个简易的网页爬虫  

    import requests url="http://www.baidu.com" try: r=requests.get(url) r.raise_for_status() r.encoding= r.apparent_encoding print r.text except: print "wrong"

      requests有七种方法,get put head post patch delete request其中get用来请求url位置的资源,put请求url位置存储一个资源覆盖源资源,head用来请求url位置的头部信息,post请求向url位置附加新的资源,patch请求改变该处的局部信息资源,delete用来请求删除该处的资源,在requests.get(url)中有些是缺省的参数,我们可以自己设置,比如

    fs={'file':open('data.xls','rb')} r=requests.request('post',url,files=fs) px={'http':'http://user:@pass10.101.10.124:1234', 'https':'http://10.10.10.1:1234'} r=requests.request('GET',url,proxies=px) kv={'user-agent':'MOzilla/5.0'} r=requests.request('GET',url,headers=kv)

    通过proxies我们可以设置访问代理服务器,可以增加登陆认证,通过headers我们可以将我们的爬虫伪装成浏览器。   我们在写爬虫的时候有可能读取到的网页是404 not found所以我们可以采用异常处理的机制,r.raise_for_status如果是200的返回码则正常否则是错误的,在终端我们可以用r.status_code 判断结果是否是200如果是则正常访问。   至对于页面的解析时我们可以采用beautifulsoup库首先我们要把读取到的东西熬成鸡汤   

    from bs5 import BeautifulSoup demo=r.text soup=BeautifulSoup(demo,'html.parser')

      我们用html.parser来进行解析,将r.text解析成正常的树结构,这样我们就能得到网页各个标签的结构关系,对他们的访问我们可以分成三种形式,上行,下行和平行。可以通过tag.children(迭代类型,要循环才能访问)或者tag.contents来访问它的儿子进行下行访问,也可以通过tag.parents来上行访问,可以通过tag.next_sbling或者tag.previous_sbling来进行平行访问,后者tag.next_sblings,tag.previous_sblings迭代。   python爬虫对列表的解析才是重点,应当勤加锻炼。

    转载请注明原文地址: https://ju.6miu.com/read-16850.html

    最新回复(0)