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
'''