day 07 爬虫
爬虫爬到的视频和图片会下载下来
#字典赋值
#1 title_content_dic[title_res[i]]=content_res[i]
#2 title_content_desc_dic[title]=(content,desc)
#需要引入requests库,则需要安装
爬取网页的全部内容
import requests
import re
response=requests.get("http://duanziwang.com/")#模拟浏览器打开网页
data=response.text
print(data)
# .匹配所有字符,*表示前面的字符0到无穷个
res=re.findall('<p>(.*?)</p>',data)
print(res)
标题和内容对应的第一种方法
import requests
import re
response=requests.get('http://ishuo.cn/')#模拟浏览器打开网页
data=response.text
####标题和内容对应的第一种方法
content_res = re.findall('<div class="content">(.*?)</div>', data)
title_res = re.findall('<a href="/subject/.*?">(.*?)</a>', data)##注意这里面的第一个.*?
# print(title_res.index('活得糊涂的人,容易幸福'))#index可以获得'活得糊涂的人,容易幸福'的索引值
title_res=title_res[10:60]
title_content_dic={}#定义空字典
for i in range(len(title_res)):
title_content_dic[title_res[i]]=content_res[i]
for i in title_content_dic.items():
print(f'{i[0]:<40} || {i[1]:<100}')
标题和内容对应的第二种方法
import requests
import re
response=requests.get('http://ishuo.cn/')
data=response.text
####标题和内容对应的第二种方法
res=re.findall('<li class="list_li">(.*?)</li>',data)#这句中的data是指在data中取值
title_content_desc_dic={}
for i in res:
content=re.findall('<div class="content">(.*?)</div>',i)[0]#这句中的i是指在i中取值
title=re.findall('<a href="/subject/.*?">(.*?)</a>',i)[0]
desc=re.findall('</a>(04月.*?)</div>',i)[0]
title_content_desc_dic[title]=(content,desc)
for i in title_content_desc_dic.items():
print(f'{i[0]:<60} || {i[1]}')
爬取图片
import requests
import re
response=requests.get('http://www.nipic.com/design/acg/renwu/index.html?page=1&tdsourcetag=s_pcqq_aiomsg')
data=response.text
img_url_res=re.findall('data-src="(.*?)"',data)
for i in img_url_res:
img_response=requests.get(i)
img_data=img_response.content
###上面的二步是图片比文字多出的部分
img_name=i.split("/")[-1]
##获取图片在网页中的名字
f=open(img_name,"wb")
f.write(img_data)
f.flush() # 快速刷新可写可不写
i s h u o爬取
import requests
import re
response=requests.get("http://ishuo.cn/") # 模拟浏览器打开网页
# print(response.status_code) # 200成功,301,404网页丢失
# print(response.encoding) # utf-8
data=response.text
#print(data)
res=re.findall('<div class="content">(.*?)</div>',data)
for i in res:#type:str
if i.startswith("<ul>"):
continue
print(i+"\n")
视频爬取
import requests
import re
response = requests.get('http://www.mod.gov.cn/v/index.htm')
# response.encoding = 'utf8'
data = response.text
# print(data)
# mp4_res1 = re.findall('<a href="(.*?)" class="img">',data)
# for i in mp4_res1:
# print(i)
mp4_res2 = re.findall('<a href="(.*?)">', data)
for i in mp4_res2: # type:str
res = re.findall('(.*?htm)', i)[0]
print(res)
res = 'http://www.mod.gov.cn/v/' + res
response = requests.get(res)
data = response.text
# http://vv.chinamil.com.cn/asset/category3/2019/06/27/asset_357593.mp4
url_res = re.findall('//Video (.*?.mp4)',data)[0]
mp4_response = requests.get(url_res)
mp4_data = mp4_response.content
f = open('test.mp4','wb')
f.write(mp4_data)
# break
'''
<a href="2019-07/20/content_4846213.htm" class="img"><img src="attachement/jpg/site21/20190720/6c4b9041ab8b1e9ca1be01.jpg" border="0"><em class="video_40x40"></em></a>
'''