【Python】简单的re正则爬取信息
本帖最后由 wushaominkk 于 2018-5-11 11:50 编辑import requests
import re
import os
def write_img(all_imgs):
for img in all_imgs:
url = "http:///" + str(img) + '.jpg'
print(url)
request = requests.get(url)
# 判断images文件夹是否存在不存在就创建然后写入数据
if not os.path.exists("./images/"):
os.makedirs("./images/")
with open("./images/" + url + '.jpg', 'wb') as f:
f.write(request.content)
# 信息写入texts文件夹内使用os模块判断是否存在文件夹不存在就创建
# 因为不能吧all_party的列表下标写死,所以就根据所有图片的for循环都是从0开始
# 动态写入每个人的信息
if not os.path.exists('./texts/'):
os.makedirs('./texts/')
with open("./texts/" + url + '.txt', 'w') as f:
f.write(all_party)
all_party = []# 存放所有人的信息
all_imgs = []# 存放所有人的照片链接
def main():
request = requests.get("http://")
html = request.content.decode()
content2 = re.compile(r'<div class="teacher_content"(.*?)<p style="padding-top:10px;">', re.S)
con2 = content2.findall(html)
# 特殊字符第一位
hsp = re.compile(r'<div class="teacher_content"(.*?)<a name="lhf">', re.S)
hsp = hsp.findall(html)
hsp = str(hsp)
hsp = hsp.split('l">')
#数据过滤
hsp = str(hsp).replace("</div>", '').replace('<div class="r">', '') \
.replace("']", '')
# 加进空列表
all_party.append(hsp)
content = re.compile(r'(.*?)<img src="(.*?).jpg">')
all_str = content.findall(str(con2))
for s in all_str:
s = str(s)
# 数据过滤
s = s.replace('<div class="weibo">', '').replace('<div class="l">', '') \
.replace('</div>', '').replace('<div class="r">', '').replace('<p>', '').replace('</p>', '') \
.replace('<br />', '').replace("<br>", '').replace('<br/>', '').replace('<span class="teacherfont">', '') \
.replace('<a href="download.shtml#1">', '').replace('</a>', '').replace('</span>', '').replace('<span class="teachervideo" >', '') \
.replace('<a name="zxf">', '').replace('<div class="teacher_content">', '').replace("('", '').replace('("', '')
s = s[:s.rfind(',')]
all_party.append(s)
# 特殊字符最后一位
sls = re.compile(r'<img src="teacher/xnw.jpg"(.*?)<p style="padding-top:10px;">', re.S)
sls = sls.findall(html)
#数据过滤
sls = str(sls).replace("'>", '').replace('<p>', '').replace('</p>', '').replace("']", '')
all_party.append(str(sls))
# 全部照片
img = re.compile(r'<img src="(.*?).jpg">')
all_img = img.findall(str(con2))
for i in all_img:
i = i.split('="')[-1:]
i = str(i).split("['")
i = str(i).split("']")
all_imgs.append(i)
# 调用函数
write_img(all_imgs)
if __name__ == '__main__':
main()
# 网址就不放了大伙看看我这码写的有哪些需要改进的地方,第一个地方我知道了就是把代码全写主函数里面了这样不好,明个在封装一下
#还有就是写的过程实在是太恶心了,大伙不懂得留言我给你们说啊
可以的,身为py新手的我学到了. 感谢分享~~ 非原创作品:标题请标明【转载】【分享】或则【笔记】 原创作品:【原创源码】【语言类型】 很好很强大,学习了 wushaominkk 发表于 2018-5-11 09:06
非原创作品:标题请标明【转载】【分享】或则【笔记】 原创作品:【原创源码】【语言类型】
收到大大
页:
[1]