博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python3 re正则匹配数据获取案例
阅读量:5117 次
发布时间:2019-06-13

本文共 1734 字,大约阅读时间需要 5 分钟。

 

# coding=utf-8

import requests
import json
from retrying import retry
import re

class TyY:
  def __init__(self):
    self.url = ["http://www.tylaw.cn/cgi-bin/GLaw.dll?DispInfo&nid={}".format(i) for i in range(3723, 3752)]
    self.headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36"
    }

  @retry(stop_max_attempt_number=3) # 设置最大请求连接数

  def _parse_url(self, url):

    response = requests.get(url, headers=self.headers, timeout=3)

    assert response.status_code == 200
    response.encoding = "gb2312"
    return response.text

  def parse_url(self, url):

    try:
      html = self._parse_url(url)
    except:
      html = None
    return html

  def get_content_list(self, html):

    content_list = []
    item = {}

    item['name'] = re.findall(r"<p align='center' class='titlc'>.*?律师:(.*?)简介.*?</p>", html, re.S)[0] if len(re.findall(r"<p align='center' class='titlc'>.*?律师:(.*?)简介.*?</p>", html, re.S)) > 0 else None

    item['email'] = re.findall(r"<div class='contc'>.*?【电子信箱】(.*?) </div>", html, re.S)[0] if len(re.findall(r"<div class='contc'>.*?【电子信箱】(.*?) </div>", html, re.S)) > 0 else None
    content_list.append(item)

    # print(item)

    return content_list

  def save_content(self, content_list):

    with open("tyy.json", "a") as f:
      for content in content_list:
        json.dump(content, f, ensure_ascii=False)
        f.write(',\n')

  def run(self):

    url_list = self.url
    for url in url_list:
      html = self.parse_url(url)
      content_list = self.get_content_list(html)
      self.save_content(content_list)
if __name__ == '__main__':
tyy = TyY()
tyy.run()

转载于:https://www.cnblogs.com/x-pyue/p/7793555.html

你可能感兴趣的文章
好莱坞十大导演排名及其代表作,你看过多少?
查看>>
Loj #139
查看>>
hihocoder1187 Divisors
查看>>
Azure 托管镜像和非托管镜像对比
查看>>
js window.open 参数设置
查看>>
032. asp.netWeb用户控件之一初识用户控件并为其自定义属性
查看>>
Ubuntu下安装MySQL及简单操作
查看>>
前端监控
查看>>
clipboard.js使用方法
查看>>
移动开发平台-应用之星app制作教程
查看>>
leetcode 459. 重复的子字符串(Repeated Substring Pattern)
查看>>
伪类与超链接
查看>>
centos 7 redis-4.0.11 主从
查看>>
博弈论 从懵逼到入门 详解
查看>>
永远的动漫,梦想在,就有远方
查看>>
springboot No Identifier specified for entity的解决办法
查看>>
慵懒中长大的人,只会挨生活留下的耳光
查看>>
"远程桌面连接--“发生身份验证错误。要求的函数不受支持
查看>>
【BZOJ1565】 植物大战僵尸
查看>>
VALSE2019总结(4)-主题报告
查看>>