PYTHON笔记第五章之requests

import  requests               #需求
from bs4 import BeautifulSoup  #导入BeautifulSoup库以解析代码按标准缩进格式输出
url='http://www.wsbookshow.com'     #定义网址
html=requests.get(url)         #引用需求库的获取网址HTML文件
html.encoding="GBK"            #编码是GBK
print(html.text)               #查看读到的html文档内容
soup=BeautifulSoup(html.text,'html.parser')#分析文件(按标签划分结构体)
print(soup)
import requests                       #导入库
url="http://www.wsbookshow.com/"      #定义网址
html=requests.get(url)                #获取网页HTML
html.encoding="GBK"                   #编码是GBK
print(html.text)                      #输出文本
htmllist=html.text.splitlines()       #把文本分隔
for row in htmllist:                  #逐行读出
    print(row)                        #输出
from urllib.parse import urlparse
url='http://www.pm25x.com/city/beijing.htm'
o=urlparse(url)#将urlstring解析成6部分并返回元组 (scheme, netloc, path, parameters, query, fragment)
print(o.scheme)
print(o.netloc)
print(o.path)
print(o.params)
print(o.query)
print(o.fragment)
print(o.port)#端口号
import requests#导入库
url='http://www.wsbookshow.com/'#定义网址
html=requests.get(url)#获取HTML
html.encoding="utf-8"#定义编码
htmllist=html.text.splitlines()#分行
n=0#初始变量
for row in htmllist:#逐行扫
    if "2" in row: n+=1#出现一个2,N就加一
print("find it {} times!".format(n))#输出N
import re                 #导入RE库正则表达式
pat=re.compile('[a-z]+')  #定义规则:任意多个数目不为0的小写字母
m=pat.search('3tem12po')  #寻找第一个符合条件的字符串
print(m)                #输出M
if not m==None:         #如果非空
    print(m.group())    #字符串
    print(m.start())    #开始下标
    print(m.end())      #结束下标(末位+1)
    print(m.span())     #区间
import re
m=re.match(r'[a-z]+','tem12po')#用静态方法
print(m)
from bs4 import BeautifulSoup
import requests

url='http://www.wsbookshow.com/'#定义网址
html=requests.get(url)#获取
html.encoding="gbk"#编码

sp=BeautifulSoup(html.text,"html.parser")#解释
links=sp.find_all(["a","img"])#得到a,img两个标签的内容
for link in links:#逐个连接扫一次
    href=link.get("href")#获取此连接中href关键字内容
    if href!=None and href.startswith("http://"):#HREF以http://开头
        print(href)#输出
import requests,re
regex=re.compile('[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+')#定义方法
#非零个[a-zA-Z0-9_.+-]加一个@再加非零个[a-zA-Z0-9-]加一个.再加非零个[a-zA-Z0-9-.]
url='http://www.wsbookshow.com/'#定义网址
html=requests.get(url)#获得HTML
emails=regex.findall(html.text)#在文本中寻找所有符合规则的条文
for email in emails:#逐条读出
    print(email)#输出
import re
pat=re.compile('[a-z]+')#规则
m=pat.findall('3tem12po')#从串中找符合规则的子串
print(m)#全部输出
#爬虫网站中的图片
import requests,os
from bs4 import BeautifulSoup
from urllib.request import urlopen

url='http://www.tooopen.com/img/87.aspx'   #定义网址

html=requests.get(url)  #获取HTML文件
html.encoding="utf-8"   #定义编码方式

sp=BeautifulSoup(html.text,'html.parser') #解释

images_dir="images/"                #定义路径
if not os.path.exists(images_dir):  #如果路径不存在
    os.mkdir(images_dir)            #创建路径
    
all_links=sp.find_all(['a','img'])  #寻获取所有A与IMG标签中的内容
for link in all_links:#遍历每一个标签内容
    src=link.get('src')#获得标签内容中含SRC的串
    href=link.get('href')#获得标签内容中含HREF的串
    attrs=[href,src]#定义一个列表,两个元素分别是两个串
    for attr in attrs:#遍历一次,这里要注意一个标签里可以有多个串含SRC或HREF
        if attr != None and ('.jpg' in attr or '.png' in attr):#如果非空且含JPG与PNG后缀
            full_path=attr#读回其路径
            filename=full_path.split('/')[-1]#文件名是按/划分的子串的倒数第一个
            ext=filename.split('.')[-1]#后缀名是按.划分的子串中的倒数第一个
            filename=filename.split('.')[-2]#文件名是按.划分的子串中的到数第二个
            if 'jpg' in ext: filename=filename+'.jpg'#文件名加上后缀
            else: filename=filename+'.png'#文件名加上后缀
            print(filename)#输出文件名
            try:#尝试
                image=urlopen(full_path)#通过完整路径获取图片
                f=open(os.path.join(images_dir,filename),'wb')#wb:以二进制写模式打开本地文件(由路径知其实是图片)
                f.write(image.read())#写入文件(就是复制图片)
                f.close()#关闭
            except:#失败
                print("error")  #报错
#爬虫PM2.5实例
from bs4 import BeautifulSoup
import requests

url1='http://www.PM25X.com/'
html=requests.get(url1)
sp1=BeautifulSoup(html.text,'html.parser')
city=sp1.find("a",{"title":"北京PM2.5"})#find返回匹配结果的第一个元素
print(city)#输出

citylink=city.get("href")#获取href关键字的内容
print(citylink)#输出

url2=url1+citylink#由此可以得到子网页的网址
print(url2)#get the suburl!

#add these two sentences 
html2=requests.get(url2)#获HTML
sp2=BeautifulSoup(html2.text,'html.parser')#分析
data1=sp2.select(".aqivalue")#选择
pm25=data1[0].text#得第0个元素的值
print("now Beijing's PM2.5 is: "+pm25)

'''
find_all(name,attrs,recursive,text,**kwargs)根据标签名/属性/内容查找文档,返回一个列表
text结果返回的是查到的所有的text='***'的文本
find(name,attrs,recursive,text,**kwargs)返回的匹配结果的第一个元素
get_text()可以获取文本内容
attrs可以传入字典的方式来查找标签,这里有个特殊的就是class,因为class在python中是特殊的字段,所以如果想要查找class相关的可以更改attrs={'class_':'element'}或者soup.find_all('',{"class":"element}),特殊的标签属性可以不写attrs,例如id
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值