前言

学了一天半的爬虫,真·从零开始,没想到那么快就实现了“汇法网”案件名称和发生地点的爬取,我也很惊讶~
本文章仅适合跟我一样的爬虫萌新!大佬轻喷!

附上我学习爬虫的慕课链接:嵩天老师:Python网络爬虫与信息提取

分析思路

  1. 打开汇法网裁判文书页。由于我个人只需要搜集案件名称及其发生地点,恰好搜索页就有!就不需要访问详情页啦~(据同学测试,若爬取详情页的话,1k条左右就会限制ip了)
  2. 翻页,观察汇法网网址变化:https://www.lawxp.com/Case/?pg=【页码】&WriteType=-1
  3. 浏览器右键“查看源代码”,发现案件名称的格式是:title="XXXXX"。
    而发生地点我这里偷点懒~地点格式为:(XXXXX人民法院)。clipboard.png
  4. 所以案件名称的正则表达式为:r'title\=\"([^\"]*)一案\"'
    而发生地点的正则表达式为:r'\(.*?人民法院',其后将切去左半括号和“人民法院”四个字。
  5. 以上就是核心啦~接下来就是代码框架了。代码的框架我参考的是嵩天老师“Python网络爬虫与信息提取”课程的第三周第8单元:淘宝商品比价定向爬虫

源代码

#HUIFA.py
import requests
import re
 
def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""
     
def parsePage(ilt, html):
    try:
        tit = re.findall(r'title\=\"([^\"]*)一案\"',html)
        pla = re.findall(r'\(.*?人民法院',html)
        for i in range(len(tit)):
            title = tit[i]
            place = re.split('[(人]',pla[i])[1]
            ilt.append([title,place])
    except:
        print("")
 
def printGoodsList(ilt):
    tplt = "{:4}\t{:16}\t{:32}"
    print(tplt.format("序号","地点", "案件"))
    count = 0
    for g in ilt:
        count = count + 1
        print(tplt.format(count, g[1], g[0]))
         
def main():
    depth = 120   #爬取深度/页面数量
    start_url = 'https://www.lawxp.com/Case/'
    infoList = []
    for i in range(depth):
        try:
            url = start_url + '?pg=' + str(i+1) + '&WriteType=-1'
            html = getHTMLText(url)
            parsePage(infoList, html)
            print("第{:4}页 已完成".format(i+1))
        except:
            continue
    printGoodsList(infoList)
     
main()

结语

“汇法网”的案件名称及其发生地点的爬取是我们校创项目的一部分。这是我第一次写爬虫,能写到这个程度自我感觉还不错!爬虫路漫漫,希望能给我这样的新手小白一些微不足道的参考!


ShadowCK
51 声望9 粉丝

这个人是个萌新,什么都没有留下。


引用和评论

0 条评论