requests BS4 python

requests.request(method,url,**kwargs)

**kwargs:控制访问的参数,均为可选项   params   data    headers    json  cookies    file    auth    timeout   proxies

 allow_redirects  :  True/False  默认为True,重定向开关

stream  : True/False  默认为True,获取内容立即下载开关

verify  :  True/False  默认为True,认证SSL证书开关

cert : 本地SSL证书路径


requests.get(url,params = None,**kwargs)

url     :      获取页面的url链接

params     :      url中的额外参数,字典或者字节流格式,可选

**kwargs    :      12个控制访问参数


requests.post(url,data= None,json=None,**kwargs)

url     :      获取页面的url链接

data:      字典、字节序列或者文件,Request的内容

json    :  JSON格式的数据,Request的内容

**kwargs    :      11个控制访问参数


异常:

flag= False

while not flag:

      try:

           requests.adapters.DEFAULT_RETRIES= 15  #增加重试连接次数

           s= requests.session()#关闭多余的连接

            s.keep_alive= False                    #requests 设置False关闭

            import urllib3.contrib.pyopenssl

            urllib3.contrib.pyopenssl.inject_into_urllib3()

            r= requests.get(url=url,headers=headers,verify=False,stream=False,timeout=30)    #证书验证设FALSE,timeout为30

            r.raise_for_status()              #不是200,抛出异常requests.HTTPError

            r.encoding= r.apparent_encoding

             print("采集网页的状态码:%s" % r.status_code)

              print("采集网页的URL:%s" % r.url)

except:

            print('[ %s ] HTTP请求失败!!!正在准备重发。。。' %url)

          sleep(3)

       continue

       flag= True

r.close()

html_title= "".join(etree.HTML(r.text).xpath('//title/text()'))

print("采集网页的标题:%s" %html_title)

title_path= './Domain_Title.txt'

savefile(title_path, html_title)

print("爬取完成:对%s目标地址采集完成" % url)

#sleep(0.3)

print("*"*70)


反爬虫:  1   User-Agent    2   Robots.txt协议   自动或者人工识别,再进行内容爬取。

robots.txt协议的查找                       https://www.baidu.com/robots.txt

Robots.txt协议 是建议但非约束性,网络爬虫可以不遵守,可能存在法律风险。

类人行为可以不遵守,爬取量很小或者爬取时间很短或者爬取次数很少。但是获取的资源不能进行商业用途。

os.path.exist()       os.path.isfile()


pip   install   beautifulsoup4      #bs4库将任何读入的html文件或字符串都转换成了utf-8格式  使用python3更合适

from   bs4   import   BeautifulSoup    #是解析html或者xml文档的库  ,BS4库的标签树的遍历

优点:  信息解析准确。

缺点: 提取过程繁琐,速度慢!

soup = BeautifulSoup("

中文

","html.parsel")

soup.prettify()      #这个方法能为文本以及html的标签增加换行符、补全标签

print(soup.p.string)

print(soup.p.prettify())


soup = BeautifulSoup(demo,"html.parsel")

soup.head

soup.head.contents

soup.body.contents

soup.body.contents[1]

你可能感兴趣的:(requests BS4 python)