Ls雷 发表于 2018-5-11 00:31

【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()
# 网址就不放了大伙看看我这码写的有哪些需要改进的地方,第一个地方我知道了就是把代码全写主函数里面了这样不好,明个在封装一下
#还有就是写的过程实在是太恶心了,大伙不懂得留言我给你们说啊

hack_wangyu 发表于 2018-5-11 00:47

可以的,身为py新手的我学到了.

chenrenjiewj 发表于 2018-5-11 06:52

感谢分享~~

wushaominkk 发表于 2018-5-11 09:06

非原创作品:标题请标明【转载】【分享】或则【笔记】 原创作品:【原创源码】【语言类型】

gulumogui 发表于 2018-5-11 09:59

很好很强大,学习了

Ls雷 发表于 2018-5-11 11:03

wushaominkk 发表于 2018-5-11 09:06
非原创作品:标题请标明【转载】【分享】或则【笔记】 原创作品:【原创源码】【语言类型】

收到大大
页: [1]
查看完整版本: 【Python】简单的re正则爬取信息